From 7b37a3a3b8064484a35da5471083220b26a43955 Mon Sep 17 00:00:00 2001 From: lcry <173590787@qq.com> Date: Sat, 14 Mar 2020 16:55:09 +0800 Subject: [PATCH] =?UTF-8?q?P16-P30:=E5=AE=8C=E6=88=90=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E5=88=B0Eureka=E5=92=8CZk=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 10 ++- cloud-consumer-order80/pom.xml | 5 ++ .../com/lcry/springcloud/OrderMain80.java | 6 +- .../config/ApplicationContextConfig.java | 2 + .../controller/OrderController.java | 4 +- .../src/main/resources/application.yml | 12 ++- cloud-consumer-zk-order80/pom.xml | 56 ++++++++++++++ .../com/lcry/springcloud/ZkOrderMain80.java | 20 +++++ .../config/ApplicationContextConfig.java | 22 ++++++ .../controller/OrderController.java | 29 ++++++++ .../src/main/resources/application.yml | 11 +++ cloud-eureka-server7001/pom.xml | 51 +++++++++++++ .../com/lcry/springcloud/EurekaMain7001.java | 20 +++++ .../src/main/resources/application.yml | 19 +++++ cloud-eureka-server7002/pom.xml | 52 +++++++++++++ .../com/lcry/springcloud/EurekaMain7002.java | 19 +++++ .../src/main/resources/application.yml | 19 +++++ cloud-provider-payment8001/pom.xml | 5 ++ .../com/lcry/springcloud/PaymentMain8001.java | 4 + .../controller/PaymentController.java | 24 ++++++ .../src/main/resources/application.yml | 17 +++++ cloud-provider-payment8002/pom.xml | 73 +++++++++++++++++++ .../com/lcry/springcloud/PaymentMain8002.java | 21 ++++++ .../controller/PaymentController.java | 70 ++++++++++++++++++ .../com/lcry/springcloud/dao/PaymentDao.java | 19 +++++ .../springcloud/service/PaymentService.java | 16 ++++ .../service/impl/PaymentServiceImpl.java | 31 ++++++++ .../src/main/resources/application.yml | 33 +++++++++ .../src/main/resources/db/payment.sql | 37 ++++++++++ .../main/resources/mapper/PaymentMapper.xml | 21 ++++++ cloud-provider-zk-payment8004/pom.xml | 60 +++++++++++++++ .../lcry/springcloud/ZkPaymentMain8004.java | 20 +++++ .../controller/PaymentController.java | 30 ++++++++ .../src/main/resources/application.yml | 11 +++ pom.xml | 5 ++ 35 files changed, 850 insertions(+), 4 deletions(-) create mode 100644 cloud-consumer-zk-order80/pom.xml create mode 100644 cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/ZkOrderMain80.java create mode 100644 cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java create mode 100644 cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java create mode 100644 cloud-consumer-zk-order80/src/main/resources/application.yml create mode 100644 cloud-eureka-server7001/pom.xml create mode 100644 cloud-eureka-server7001/src/main/java/com/lcry/springcloud/EurekaMain7001.java create mode 100644 cloud-eureka-server7001/src/main/resources/application.yml create mode 100644 cloud-eureka-server7002/pom.xml create mode 100644 cloud-eureka-server7002/src/main/java/com/lcry/springcloud/EurekaMain7002.java create mode 100644 cloud-eureka-server7002/src/main/resources/application.yml create mode 100644 cloud-provider-payment8002/pom.xml create mode 100644 cloud-provider-payment8002/src/main/java/com/lcry/springcloud/PaymentMain8002.java create mode 100644 cloud-provider-payment8002/src/main/java/com/lcry/springcloud/controller/PaymentController.java create mode 100644 cloud-provider-payment8002/src/main/java/com/lcry/springcloud/dao/PaymentDao.java create mode 100644 cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/PaymentService.java create mode 100644 cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/impl/PaymentServiceImpl.java create mode 100644 cloud-provider-payment8002/src/main/resources/application.yml create mode 100644 cloud-provider-payment8002/src/main/resources/db/payment.sql create mode 100644 cloud-provider-payment8002/src/main/resources/mapper/PaymentMapper.xml create mode 100644 cloud-provider-zk-payment8004/pom.xml create mode 100644 cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/ZkPaymentMain8004.java create mode 100644 cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/controller/PaymentController.java create mode 100644 cloud-provider-zk-payment8004/src/main/resources/application.yml diff --git a/.gitignore b/.gitignore index 8e02a3f..087c813 100644 --- a/.gitignore +++ b/.gitignore @@ -104,4 +104,12 @@ cloud-consumer-order80/cloud-consumer-order80.iml cloud-consumer-order80/src/test/ cloud-api-commons/cloud-api-commons.iml cloud-api-commons/target/ -cloud-api-commons/src/test/ \ No newline at end of file +cloud-api-commons/src/test/ +cloud-eureka-server7001/src/test/ +cloud-eureka-server7001/target/ +cloud-eureka-server7002/src/test/ +cloud-eureka-server7002/target/ +cloud-provider-payment8002/src/test/ +cloud-provider-payment8002/target/ +cloud-consumer-zk-order80/target/ +cloud-provider-zk-payment8004/target/ diff --git a/cloud-consumer-order80/pom.xml b/cloud-consumer-order80/pom.xml index 83a83b5..696a5c7 100644 --- a/cloud-consumer-order80/pom.xml +++ b/cloud-consumer-order80/pom.xml @@ -13,6 +13,11 @@ cloud-consumer-order80 + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + com.lcry diff --git a/cloud-consumer-order80/src/main/java/com/lcry/springcloud/OrderMain80.java b/cloud-consumer-order80/src/main/java/com/lcry/springcloud/OrderMain80.java index a21ae99..9182220 100644 --- a/cloud-consumer-order80/src/main/java/com/lcry/springcloud/OrderMain80.java +++ b/cloud-consumer-order80/src/main/java/com/lcry/springcloud/OrderMain80.java @@ -2,6 +2,8 @@ package com.lcry.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; /** * OrderMain80 @@ -10,8 +12,10 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @date 2020/03/14 11:59 */ @SpringBootApplication +@EnableEurekaClient +@EnableDiscoveryClient public class OrderMain80 { public static void main(String[] args) { SpringApplication.run(OrderMain80.class, args); } -} +} \ No newline at end of file diff --git a/cloud-consumer-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java b/cloud-consumer-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java index 0e30588..6d61e18 100644 --- a/cloud-consumer-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java +++ b/cloud-consumer-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java @@ -1,5 +1,6 @@ package com.lcry.springcloud.config; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.client.RestTemplate; @@ -14,6 +15,7 @@ import org.springframework.web.client.RestTemplate; @Configuration public class ApplicationContextConfig { @Bean //相当于Spring中applicationContext.xml中 + @LoadBalanced //使用此注解赋予RestTemplate负载均衡的能力 public RestTemplate getRestTemplate() { return new RestTemplate(); } diff --git a/cloud-consumer-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java b/cloud-consumer-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java index 489e3fe..7bdf688 100644 --- a/cloud-consumer-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java +++ b/cloud-consumer-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java @@ -19,7 +19,9 @@ import javax.annotation.Resource; @RestController @Slf4j public class OrderController { - public static final String PAYMENT_URL = "http://localhost:8001"; +// public static final String PAYMENT_URL = "http://localhost:8001"; + //集群应用通过服务名调用,注意配置需要加上@LoadBalanced注解启用负载均衡 + public static final String PAYMENT_URL = "http://CLOUD-PAYMENT-SERVICE"; @Resource private RestTemplate restTemplate; diff --git a/cloud-consumer-order80/src/main/resources/application.yml b/cloud-consumer-order80/src/main/resources/application.yml index ff04e0d..eeb6709 100644 --- a/cloud-consumer-order80/src/main/resources/application.yml +++ b/cloud-consumer-order80/src/main/resources/application.yml @@ -3,4 +3,14 @@ server: spring: application: - name: cloud-order-service \ No newline at end of file + name: cloud-order-service + +eureka: + client: + #表示是否将自己注册进EurekaServer,默认为true + register-with-eureka: true + #是否从EurekaServer中抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡 + fetchRegistry: true + service-url: + #defaultZone: http://localhost:7001/eureka #单机版 + defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 \ No newline at end of file diff --git a/cloud-consumer-zk-order80/pom.xml b/cloud-consumer-zk-order80/pom.xml new file mode 100644 index 0000000..2d10287 --- /dev/null +++ b/cloud-consumer-zk-order80/pom.xml @@ -0,0 +1,56 @@ + + + + 2020SpringCloud + com.lcry + 1.0-SNAPSHOT + + 4.0.0 + + + cloud-consumer-zk-order80 + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + + + + org.apache.zookeeper + zookeeper + + + + + + org.apache.zookeeper + zookeeper + 3.4.14 + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + \ No newline at end of file diff --git a/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/ZkOrderMain80.java b/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/ZkOrderMain80.java new file mode 100644 index 0000000..e9be31d --- /dev/null +++ b/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/ZkOrderMain80.java @@ -0,0 +1,20 @@ +package com.lcry.springcloud; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * ZkOrderMain80 + * + * @author lcry + * @date 2020/03/14 16:19 + * ZK版本消费方:只是测试,不写任何具体业务 + */ +@SpringBootApplication +@EnableDiscoveryClient +public class ZkOrderMain80 { + public static void main(String[] args) { + SpringApplication.run(ZkOrderMain80.class, args); + } +} diff --git a/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java b/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java new file mode 100644 index 0000000..73893a3 --- /dev/null +++ b/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/config/ApplicationContextConfig.java @@ -0,0 +1,22 @@ +package com.lcry.springcloud.config; + +import org.springframework.cloud.client.loadbalancer.LoadBalanced; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; + +/** + * ApplicationContextConfig + * + * @author lcry + * @date 2020/03/14 16:21 + * 配置类 + */ +@Configuration +public class ApplicationContextConfig { + @Bean + @LoadBalanced + public RestTemplate restTemplate() { + return new RestTemplate(); + } +} diff --git a/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java b/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java new file mode 100644 index 0000000..88c146d --- /dev/null +++ b/cloud-consumer-zk-order80/src/main/java/com/lcry/springcloud/controller/OrderController.java @@ -0,0 +1,29 @@ +package com.lcry.springcloud.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; + +/** + * OrderZkController + * + * @author lcry + * @date 2020/03/14 16:21 + */ +@RestController +@Slf4j +public class OrderController { + public static final String INVOKE_URL = "http://cloud-provider-payment"; + + @Resource + private RestTemplate restTemplate; + + @GetMapping(value = "/consumer/payment/zk") + public String paymentInfo() { + String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class); + return result; + } +} diff --git a/cloud-consumer-zk-order80/src/main/resources/application.yml b/cloud-consumer-zk-order80/src/main/resources/application.yml new file mode 100644 index 0000000..1953058 --- /dev/null +++ b/cloud-consumer-zk-order80/src/main/resources/application.yml @@ -0,0 +1,11 @@ +#80表示注册到zookeeper服务器的支付服务提供者端口号 +server: + port: 80 + +#服务别名——注册到zookeeper注册中心的名称 +spring: + application: + name: cloud-consumer-order + cloud: + zookeeper: + connect-string: 127.0.0.1:2181 \ No newline at end of file diff --git a/cloud-eureka-server7001/pom.xml b/cloud-eureka-server7001/pom.xml new file mode 100644 index 0000000..1d2a52a --- /dev/null +++ b/cloud-eureka-server7001/pom.xml @@ -0,0 +1,51 @@ + + + + 2020SpringCloud + com.lcry + 1.0-SNAPSHOT + + 4.0.0 + + + cloud-eureka-server7001 + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-server + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + + + org.springframework.boot + spring-boot-starter-test + test + + + junit + junit + + + + \ No newline at end of file diff --git a/cloud-eureka-server7001/src/main/java/com/lcry/springcloud/EurekaMain7001.java b/cloud-eureka-server7001/src/main/java/com/lcry/springcloud/EurekaMain7001.java new file mode 100644 index 0000000..41b3369 --- /dev/null +++ b/cloud-eureka-server7001/src/main/java/com/lcry/springcloud/EurekaMain7001.java @@ -0,0 +1,20 @@ +package com.lcry.springcloud; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +/** + * EurekaMain7001 + * + * @author lcry + * @date 2020/03/14 13:02 + */ +@SpringBootApplication +@EnableEurekaServer +public class EurekaMain7001 { + public static void main(String[] args) { + SpringApplication.run(EurekaMain7001.class, args); + } +} diff --git a/cloud-eureka-server7001/src/main/resources/application.yml b/cloud-eureka-server7001/src/main/resources/application.yml new file mode 100644 index 0000000..17f8186 --- /dev/null +++ b/cloud-eureka-server7001/src/main/resources/application.yml @@ -0,0 +1,19 @@ +server: + port: 7001 + +eureka: + instance: + hostname: eureka7001.com #Eureka服务端的实例名称 + client: + #false表示不向注册中心中注册自己 + register-with-eureka: false + #false表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 + fetch-registry: false + service-url: + #设置与Eureka Server之间交互的地址,查询服务和注册服务都需要依赖这个地址 + #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版,指向自己 + defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 + server: + #关闭Eureka自我保护机制,保证不可用服务被及时剔除 + enable-self-preservation: false + eviction-interval-timer-in-ms: 2000 \ No newline at end of file diff --git a/cloud-eureka-server7002/pom.xml b/cloud-eureka-server7002/pom.xml new file mode 100644 index 0000000..060fc0d --- /dev/null +++ b/cloud-eureka-server7002/pom.xml @@ -0,0 +1,52 @@ + + + + 2020SpringCloud + com.lcry + 1.0-SNAPSHOT + + 4.0.0 + + + cloud-eureka-server7002 + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-server + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + + + org.springframework.boot + spring-boot-starter-test + test + + + junit + junit + + + + + \ No newline at end of file diff --git a/cloud-eureka-server7002/src/main/java/com/lcry/springcloud/EurekaMain7002.java b/cloud-eureka-server7002/src/main/java/com/lcry/springcloud/EurekaMain7002.java new file mode 100644 index 0000000..1d8c27b --- /dev/null +++ b/cloud-eureka-server7002/src/main/java/com/lcry/springcloud/EurekaMain7002.java @@ -0,0 +1,19 @@ +package com.lcry.springcloud; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; + +/** + * EurekaMain7002 + * + * @author lcry + * @date 2020/03/14 13:42 + */ +@SpringBootApplication +@EnableEurekaServer +public class EurekaMain7002 { + public static void main(String[] args) { + SpringApplication.run(EurekaMain7002.class, args); + } +} diff --git a/cloud-eureka-server7002/src/main/resources/application.yml b/cloud-eureka-server7002/src/main/resources/application.yml new file mode 100644 index 0000000..5c192fd --- /dev/null +++ b/cloud-eureka-server7002/src/main/resources/application.yml @@ -0,0 +1,19 @@ +server: + port: 7002 + +eureka: + instance: + hostname: eureka7002.com #Eureka服务端的实例名称 + client: + #false表示不向注册中心中注册自己 + register-with-eureka: false + #false表示自己就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 + fetch-registry: false + service-url: + #设置与Eureka Server之间交互的地址,查询服务和注册服务都需要依赖这个地址 + #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #单机版,指向自己 + defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 + server: + #关闭Eureka自我保护机制,保证不可用服务被及时剔除 + enable-self-preservation: false + eviction-interval-timer-in-ms: 2000 \ No newline at end of file diff --git a/cloud-provider-payment8001/pom.xml b/cloud-provider-payment8001/pom.xml index 9a6965a..50dd9d6 100644 --- a/cloud-provider-payment8001/pom.xml +++ b/cloud-provider-payment8001/pom.xml @@ -13,6 +13,11 @@ cloud-provider-payment8001 + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + com.lcry diff --git a/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/PaymentMain8001.java b/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/PaymentMain8001.java index c07dd1f..7171137 100644 --- a/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/PaymentMain8001.java +++ b/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/PaymentMain8001.java @@ -2,6 +2,8 @@ package com.lcry.springcloud; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; /** * PaymentMain8001 @@ -10,6 +12,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication; * @date 2020/03/13 20:54 */ @SpringBootApplication +@EnableEurekaClient +@EnableDiscoveryClient //Discovery服务发现 public class PaymentMain8001 { public static void main(String[] args) { SpringApplication.run(PaymentMain8001.class, args); diff --git a/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/controller/PaymentController.java b/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/controller/PaymentController.java index 3bbeb2f..c6d7885 100644 --- a/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/controller/PaymentController.java +++ b/cloud-provider-payment8001/src/main/java/com/lcry/springcloud/controller/PaymentController.java @@ -4,9 +4,12 @@ import com.lcry.springcloud.entities.CommonResult; import com.lcry.springcloud.entities.Payment; import com.lcry.springcloud.service.PaymentService; import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import java.util.List; /** * PaymentController @@ -21,6 +24,9 @@ public class PaymentController { @Resource private PaymentService paymentService; + @Resource + private DiscoveryClient discoveryClient; + @PostMapping(value = "/payment/create") public CommonResult create(@RequestBody Payment payment) { int result = paymentService.create(payment); @@ -44,4 +50,22 @@ public class PaymentController { return new CommonResult(444, "没有对应记录,查询ID:" + id, null); } } + + + @GetMapping(value = "/payment/discovery") + public Object discovery() { + //查询Eureka上面注册了几个服务 + List services = discoveryClient.getServices(); + for (String service : services) { + log.info("service:" + service); + } + + //查询对应名字下面有几个示例 + List instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE"); + for (ServiceInstance instance : instances) { + log.info(instance.getServiceId() + "\t" + instance.getHost() + + "\t" + instance.getPort() + "\t" + instance.getUri()); + } + return this.discoveryClient; + } } diff --git a/cloud-provider-payment8001/src/main/resources/application.yml b/cloud-provider-payment8001/src/main/resources/application.yml index 66c447b..6d44780 100644 --- a/cloud-provider-payment8001/src/main/resources/application.yml +++ b/cloud-provider-payment8001/src/main/resources/application.yml @@ -11,6 +11,23 @@ spring: username: root password: lcry +eureka: + client: + #表示是否将自己注册进EurekaServer,默认为true + register-with-eureka: true + #是否从EurekaServer中抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡 + fetchRegistry: true + service-url: + #defaultZone: http://localhost:7001/eureka #单机版 + defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 + instance: + instance-id: payment8001 #修改Status名称 + prefer-ip-address: true + #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认30) + lease-renewal-interval-in-seconds: 10 + #Eureka服务端在收到最后一次心跳后等待的时间上限,单位为秒(默认90),超时剔除服务 + lease-expiration-duration-in-seconds: 60 + mybatis: mapperLocations: classpath:mapper/*.xml type-aliases-package: com.lcry.springcloud.entities # 所有Entity别名类所在包 \ No newline at end of file diff --git a/cloud-provider-payment8002/pom.xml b/cloud-provider-payment8002/pom.xml new file mode 100644 index 0000000..fa94a61 --- /dev/null +++ b/cloud-provider-payment8002/pom.xml @@ -0,0 +1,73 @@ + + + + 2020SpringCloud + com.lcry + 1.0-SNAPSHOT + + 4.0.0 + + + cloud-provider-payment8002 + + + + + org.springframework.cloud + spring-cloud-starter-netflix-eureka-client + + + + com.lcry + cloud-api-commons + ${project.version} + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + org.mybatis.spring.boot + mybatis-spring-boot-starter + + + com.alibaba + druid-spring-boot-starter + 1.1.10 + + + + mysql + mysql-connector-java + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.projectlombok + lombok + true + + + org.springframework.boot + spring-boot-starter-test + test + + + + \ No newline at end of file diff --git a/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/PaymentMain8002.java b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/PaymentMain8002.java new file mode 100644 index 0000000..c958854 --- /dev/null +++ b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/PaymentMain8002.java @@ -0,0 +1,21 @@ +package com.lcry.springcloud; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.netflix.eureka.EnableEurekaClient; + +/** + * PaymentMain8001 + * + * @author lcry + * @date 2020/03/13 20:54 + */ +@SpringBootApplication +@EnableEurekaClient +@EnableDiscoveryClient //Discovery服务发现 +public class PaymentMain8002 { + public static void main(String[] args) { + SpringApplication.run(PaymentMain8002.class, args); + } +} diff --git a/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/controller/PaymentController.java b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/controller/PaymentController.java new file mode 100644 index 0000000..12dd001 --- /dev/null +++ b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/controller/PaymentController.java @@ -0,0 +1,70 @@ +package com.lcry.springcloud.controller; + +import com.lcry.springcloud.entities.CommonResult; +import com.lcry.springcloud.entities.Payment; +import com.lcry.springcloud.service.PaymentService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.cloud.client.ServiceInstance; +import org.springframework.cloud.client.discovery.DiscoveryClient; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import java.util.List; + +/** + * PaymentController + * + * @author lcry + * @date 2020/03/13 21:39 + * 控制器 + */ +@RestController +@Slf4j +public class PaymentController { + @Resource + private PaymentService paymentService; + + @Resource + private DiscoveryClient discoveryClient; + + @PostMapping(value = "/payment/create") + public CommonResult create(@RequestBody Payment payment) { + int result = paymentService.create(payment); + log.info("插入结果:" + result); + + if (result > 0) { + return new CommonResult(200, "插入数据成功", result); + } else { + return new CommonResult(444, "插入数据失败", null); + } + } + + @GetMapping(value = "/payment/get/{id}") + public CommonResult getPaymentById(@PathVariable("id") Long id) { + Payment payment = paymentService.getPaymentById(id); + log.info("查询结果:" + payment); + + if (payment != null) { + return new CommonResult(200, "查询成功", payment); + } else { + return new CommonResult(444, "没有对应记录,查询ID:" + id, null); + } + } + + @GetMapping(value = "/payment/discovery") + public Object discovery() { + //查询Eureka上面注册了几个服务 + List services = discoveryClient.getServices(); + for (String service : services) { + log.info("service:" + service); + } + + //查询对应名字下面有几个示例 + List instances = discoveryClient.getInstances("CLOUD-PAYMENT-SERVICE"); + for (ServiceInstance instance : instances) { + log.info(instance.getServiceId() + "\t" + instance.getHost() + + "\t" + instance.getPort() + "\t" + instance.getUri()); + } + return this.discoveryClient; + } +} diff --git a/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/dao/PaymentDao.java b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/dao/PaymentDao.java new file mode 100644 index 0000000..04e9531 --- /dev/null +++ b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/dao/PaymentDao.java @@ -0,0 +1,19 @@ +package com.lcry.springcloud.dao; + +import com.lcry.springcloud.entities.Payment; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +/** + * PaymentDao + * + * @author lcry + * @date 2020/03/13 21:30 + * Dao层 + */ +@Mapper +public interface PaymentDao { + int create(Payment payment); //增 + + Payment getPaymentById(@Param("id") Long id); //根据id查询 +} diff --git a/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/PaymentService.java b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/PaymentService.java new file mode 100644 index 0000000..c30d8e7 --- /dev/null +++ b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/PaymentService.java @@ -0,0 +1,16 @@ +package com.lcry.springcloud.service; + +import com.lcry.springcloud.entities.Payment; +import org.apache.ibatis.annotations.Param; + +/** + * PaymentService + * + * @author lcry + * @date 2020/03/13 21:28 + */ +public interface PaymentService { + int create(Payment payment); //增 + + Payment getPaymentById(@Param("id") Long id); //根据id查询 +} diff --git a/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/impl/PaymentServiceImpl.java b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/impl/PaymentServiceImpl.java new file mode 100644 index 0000000..c76ee35 --- /dev/null +++ b/cloud-provider-payment8002/src/main/java/com/lcry/springcloud/service/impl/PaymentServiceImpl.java @@ -0,0 +1,31 @@ +package com.lcry.springcloud.service.impl; + +import com.lcry.springcloud.dao.PaymentDao; +import com.lcry.springcloud.entities.Payment; +import com.lcry.springcloud.service.PaymentService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +/** + * PaymentServiceImpl + * + * @author lcry + * @date 2020/03/13 21:29 + * service实现类 + */ +@Service +public class PaymentServiceImpl implements PaymentService { + @Resource + private PaymentDao paymentDao; + + @Override + public int create(Payment payment) { + return paymentDao.create(payment); + } + + @Override + public Payment getPaymentById(Long id) { + return paymentDao.getPaymentById(id); + } +} diff --git a/cloud-provider-payment8002/src/main/resources/application.yml b/cloud-provider-payment8002/src/main/resources/application.yml new file mode 100644 index 0000000..3f598a0 --- /dev/null +++ b/cloud-provider-payment8002/src/main/resources/application.yml @@ -0,0 +1,33 @@ +server: + port: 8002 + +spring: + application: + name: cloud-payment-service + datasource: + type: com.alibaba.druid.pool.DruidDataSource # 当前数据源操作类型 + driver-class-name: org.gjt.mm.mysql.Driver # mysql驱动包 + url: jdbc:mysql://localhost:3306/db2020?useUnicode=true&characterEncoding=utf-8&useSSL=false + username: root + password: lcry + +eureka: + client: + #表示是否将自己注册进EurekaServer,默认为true + register-with-eureka: true + #是否从EurekaServer中抓取已有的注册信息,默认为true。单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡 + fetchRegistry: true + service-url: + #defaultZone: http://localhost:7001/eureka #单机版 + defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka #集群版 + instance: + instance-id: payment8002 #修改Status名称 + prefer-ip-address: true + #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认30) + lease-renewal-interval-in-seconds: 10 + #Eureka服务端在收到最后一次心跳后等待的时间上限,单位为秒(默认90),超时剔除服务 + lease-expiration-duration-in-seconds: 60 + +mybatis: + mapperLocations: classpath:mapper/*.xml + type-aliases-package: com.lcry.springcloud.entities # 所有Entity别名类所在包 \ No newline at end of file diff --git a/cloud-provider-payment8002/src/main/resources/db/payment.sql b/cloud-provider-payment8002/src/main/resources/db/payment.sql new file mode 100644 index 0000000..2ea110e --- /dev/null +++ b/cloud-provider-payment8002/src/main/resources/db/payment.sql @@ -0,0 +1,37 @@ +/* + Navicat Premium Data Transfer + + Source Server : 本地mysql + Source Server Type : MySQL + Source Server Version : 50717 + Source Host : localhost:3306 + Source Schema : db2020 + + Target Server Type : MySQL + Target Server Version : 50717 + File Encoding : 65001 + + Date: 13/03/2020 22:40:33 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for payment +-- ---------------------------- +DROP TABLE IF EXISTS `payment`; +CREATE TABLE `payment` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `serial` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 25 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of payment +-- ---------------------------- +INSERT INTO `payment` VALUES (1, 'aaa'); +INSERT INTO `payment` VALUES (22, 'bbbb'); +INSERT INTO `payment` VALUES (24, '123'); + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/cloud-provider-payment8002/src/main/resources/mapper/PaymentMapper.xml b/cloud-provider-payment8002/src/main/resources/mapper/PaymentMapper.xml new file mode 100644 index 0000000..dbfa242 --- /dev/null +++ b/cloud-provider-payment8002/src/main/resources/mapper/PaymentMapper.xml @@ -0,0 +1,21 @@ + + + + + + + insert into payment(serial) values(#{serial}); + + + + + + + + + + + + diff --git a/cloud-provider-zk-payment8004/pom.xml b/cloud-provider-zk-payment8004/pom.xml new file mode 100644 index 0000000..342d0fc --- /dev/null +++ b/cloud-provider-zk-payment8004/pom.xml @@ -0,0 +1,60 @@ + + + + 2020SpringCloud + com.lcry + 1.0-SNAPSHOT + + 4.0.0 + + + cloud-provider-zk-payment8004 + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.cloud + spring-cloud-starter-zookeeper-discovery + + + + org.apache.zookeeper + zookeeper + + + + + + org.apache.zookeeper + zookeeper + 3.4.14 + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.springframework.boot + spring-boot-starter-test + test + + + org.projectlombok + lombok + true + + + + + \ No newline at end of file diff --git a/cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/ZkPaymentMain8004.java b/cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/ZkPaymentMain8004.java new file mode 100644 index 0000000..5199bac --- /dev/null +++ b/cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/ZkPaymentMain8004.java @@ -0,0 +1,20 @@ +package com.lcry.springcloud; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; + +/** + * ZkPaymentMain8004 + * + * @author lcry + * @date 2020/03/14 16:08 + * ZK版本服务方:只是测试,不写任何具体业务 + */ +@SpringBootApplication +@EnableDiscoveryClient //该注解用于向使用consul或者zookeeper作为注册中心时注册服务 +public class ZkPaymentMain8004 { + public static void main(String[] args) { + SpringApplication.run(ZkPaymentMain8004.class, args); + } +} diff --git a/cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/controller/PaymentController.java b/cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/controller/PaymentController.java new file mode 100644 index 0000000..4296174 --- /dev/null +++ b/cloud-provider-zk-payment8004/src/main/java/com/lcry/springcloud/controller/PaymentController.java @@ -0,0 +1,30 @@ +package com.lcry.springcloud.controller; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.UUID; + +/** + * PaymentController + * + * @author lcry + * @date 2020/03/14 16:11 + */ +@RestController +@Slf4j +public class PaymentController { + @Value("${server.port}") + private String serverPort; + + /* + 测试注册服务到zk + */ + @RequestMapping(value = "/payment/zk") + public String paymentzk() { + return "SpringCloud with zookeeper:" + serverPort + "\t" + + UUID.randomUUID().toString(); + } +} diff --git a/cloud-provider-zk-payment8004/src/main/resources/application.yml b/cloud-provider-zk-payment8004/src/main/resources/application.yml new file mode 100644 index 0000000..1c51637 --- /dev/null +++ b/cloud-provider-zk-payment8004/src/main/resources/application.yml @@ -0,0 +1,11 @@ +#8004表示注册到zookeeper服务器的支付服务提供者端口号 +server: + port: 8004 + +#服务别名——注册到zookeeper注册中心的名称 +spring: + application: + name: cloud-provider-payment + cloud: + zookeeper: + connect-string: 127.0.0.1:2181 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 21f46db..fbcc242 100644 --- a/pom.xml +++ b/pom.xml @@ -9,8 +9,13 @@ 1.0-SNAPSHOT cloud-provider-payment8001 + cloud-provider-payment8002 cloud-consumer-order80 cloud-api-commons + cloud-eureka-server7001 + cloud-eureka-server7002 + cloud-provider-zk-payment8004 + cloud-consumer-zk-order80 pom -- GitLab