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