diff --git a/.gitignore b/.gitignore index 8e02a3f64f4de5f724a50aa28f3c2f07f4544fbd..087c8131dd16e4130804e53620b7cff58ea7def9 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 83a83b50f3ac1406bccbb6d67466925c237718a4..696a5c7ff9295feb189b71e2b2d5713a000d5835 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 a21ae997efdd23b293e60db815864dbe62ec0646..9182220a46f62053fcf328fb0be2f93f4adf6ae6 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 0e30588ee8873e2e7ca80fc30113eeef0548504a..6d61e18cb7e3f31cd777664c53b16b7e7f99c9fe 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 489e3feb637b356e56e65124bc0e1add70f2da43..7bdf6886a2ad9fd2e8b8f3116e1bf02d4b77f076 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 ff04e0d5b53a7bcecc3114cd1ae31e08b69bd694..eeb67097e3d7510d32f1ffb9bad2ade0deb67c88 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 0000000000000000000000000000000000000000..2d10287511073829fc24e0608250913725c69f3f --- /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 0000000000000000000000000000000000000000..e9be31d727ca3172c65568c7cba2383278c97deb --- /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 0000000000000000000000000000000000000000..73893a3c6277c82e88cc4139239fd7afb3cfff86 --- /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 0000000000000000000000000000000000000000..88c146d235369bc3ecdda94c3c3b6822434345d8 --- /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 0000000000000000000000000000000000000000..19530584625203b1ffc9e0e0576790e64594199c --- /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 0000000000000000000000000000000000000000..1d2a52a9a98401fe02d169676f1f7192917c19b5 --- /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 0000000000000000000000000000000000000000..41b3369c63463b14ab70168742a2f43af6d7c571 --- /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 0000000000000000000000000000000000000000..17f81863113f5ba78d268c1b17ad530153d9a840 --- /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 0000000000000000000000000000000000000000..060fc0d93cd7416305fcb6d5c317df9d70ccdad4 --- /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 0000000000000000000000000000000000000000..1d8c27ba39f0ea49541b73ade12be5c715235849 --- /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 0000000000000000000000000000000000000000..5c192fdee97a82ec94ac568cc46e5f32cf4988d8 --- /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 9a6965a3ae7438507000d389636bb5428daf2be6..50dd9d60e7806227c99083fa817f460e99542d25 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 c07dd1fdcbfdbf6d83955d4eb6deb3ec8e1f3d30..717113746230c3712446a852ececa8be1542307b 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 3bbeb2fa59db5ee9e3cad6e002e47609a4108193..c6d7885e584dd0921dd0af8b219737aa991e3fd5 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 66c447bdf68e3c16b77234d9eb8de1e244a9b8ca..6d44780dac4e6a0a1ed08d1c61789884e42b67e5 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 0000000000000000000000000000000000000000..fa94a611ac576c38ad03aaea5814b4778a45c18c --- /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 0000000000000000000000000000000000000000..c958854493e7c7c434e6fe14cfcba69583250b93 --- /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 0000000000000000000000000000000000000000..12dd0010772c2cb35283dfcec91c17dd860f23d7 --- /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 0000000000000000000000000000000000000000..04e953166185e4e22659b61748b611db1f328391 --- /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 0000000000000000000000000000000000000000..c30d8e78c8729f774d00bcdd91b100d2e8b06f6b --- /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 0000000000000000000000000000000000000000..c76ee3508d76ab939a68f19387d682184f63db48 --- /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 0000000000000000000000000000000000000000..3f598a0ccfa7726129d7850ad9779f931d551d0f --- /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 0000000000000000000000000000000000000000..2ea110e2ebaebe4f56f7f298e49b27abf0acaeb7 --- /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 0000000000000000000000000000000000000000..dbfa242c9b0f830d37e3576585bdf722b1ee980b --- /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 0000000000000000000000000000000000000000..342d0fc6d7f585dfc33b38ba1e9687764a88c470 --- /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 0000000000000000000000000000000000000000..5199bace64da3f73558a6c183b730261dc83eadf --- /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 0000000000000000000000000000000000000000..4296174e6fad27e1dc282d495525c2df6faf5301 --- /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 0000000000000000000000000000000000000000..1c51637852ce983b45dd88352a9c83ca8965a1e0 --- /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 21f46db99f1be85893150bc568a96759799c6517..fbcc2425090dc70f81a3c00c928e180ac5e7cad8 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