公司网站招聘的作用,娄底网站建设方案,安慧桥做网站公司,怎么知道自己的域名基于Spring Cloud实现服务的发布与调用。而在18年7月份#xff0c;Eureka2.0宣布停更了#xff0c;将不再进行开发#xff0c;所以对于公司技术选型来说#xff0c;可能会换用其他方案做注册中心。本章学习便是使用ZooKeeper作为注册中心。
本章使用的zookeeper版本是 3.6…基于Spring Cloud实现服务的发布与调用。而在18年7月份Eureka2.0宣布停更了将不再进行开发所以对于公司技术选型来说可能会换用其他方案做注册中心。本章学习便是使用ZooKeeper作为注册中心。
本章使用的zookeeper版本是 3.6.0
项目架构图如下 搭建服务提供者
1、新建一个maven项目test-springcloud-provider-payment8004
结构如下 2、引入依赖编辑pom文件
1 !-- spring-cloud 整合 zookeeper --
2 dependency
3 groupIdorg.springframework.cloud/groupId
4 artifactIdspring-cloud-starter-zookeeper-discovery/artifactId
5 /dependency完整pom文件如下 1 ?xml version1.0 encodingUTF-8?2 project xmlnshttp://maven.apache.org/POM/4.0.03 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance4 xsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd5 parent6 artifactIdtest-springcloud/artifactId7 groupIdcom.test/groupId8 version1.0-SNAPSHOT/version9 /parent
10 modelVersion4.0.0/modelVersion
11
12 artifactIdtest-springcloud-provider-payment8004/artifactId
13
14 dependencies
15
16 !-- spring-cloud 整合 zookeeper --
17 dependency
18 groupIdorg.springframework.cloud/groupId
19 artifactIdspring-cloud-starter-zookeeper-discovery/artifactId
20 !-- 排除自带的zookeeper jar包 --
21 exclusions
22 exclusion
23 groupIdorg.apache.zookeeper/groupId
24 artifactIdzookeeper/artifactId
25 /exclusion
26 /exclusions
27 /dependency
28
29 !-- zookeeper 引入对应版本的zookeeper --
30 dependency
31 groupIdorg.apache.zookeeper/groupId
32 artifactIdzookeeper/artifactId
33 version3.6.0/version
34 exclusions
35 exclusion
36 groupIdorg.slf4j/groupId
37 artifactIdslf4j-log4j12/artifactId
38 /exclusion
39 exclusion
40 groupIdlog4j/groupId
41 artifactIdlog4j/artifactId
42 /exclusion
43 /exclusions
44 /dependency
45
46 !-- spring boot --
47 dependency
48 groupIdorg.springframework.boot/groupId
49 artifactIdspring-boot-starter-web/artifactId
50 /dependency
51 dependency
52 groupIdorg.springframework.boot/groupId
53 artifactIdspring-boot-starter-actuator/artifactId
54 /dependency
55
56 dependency
57 groupIdorg.springframework.boot/groupId
58 artifactIdspring-boot-devtools/artifactId
59 scoperuntime/scope
60 optionaltrue/optional
61 /dependency
62 dependency
63 groupIdorg.projectlombok/groupId
64 artifactIdlombok/artifactId
65 optionaltrue/optional
66 /dependency
67
68 dependency
69 groupIdorg.springframework.boot/groupId
70 artifactIdspring-boot-starter-test/artifactId
71 scopetest/scope
72 /dependency
73
74 /dependencies
75
76 build
77 finalNametest-springcloud-provider-payment8004/finalName
78 /build
79
80 /projectpom.xml
需要注意由于通过spring-cloud-starter-zookeeper-discovery依赖引入的zookeeper jar包于zookeeper服务器版本不一致导致的导致项目启动失败
报错Caused by: org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode Unimplemented for /services/xx/xxx
解决引入对于版本的 zookeeper jar包本章使用的zookeeper版本是3.6.0所以引入zookeeper-3.6.0.jar如下 1 !-- spring-cloud 整合 zookeeper --2 dependency3 groupIdorg.springframework.cloud/groupId4 artifactIdspring-cloud-starter-zookeeper-discovery/artifactId5 !-- 排除自带的zookeeper jar包 --6 exclusions7 exclusion8 groupIdorg.apache.zookeeper/groupId9 artifactIdzookeeper/artifactId
10 /exclusion
11 /exclusions
12 /dependency
13
14 !-- zookeeper 引入对应版本的zookeeper --
15 dependency
16 groupIdorg.apache.zookeeper/groupId
17 artifactIdzookeeper/artifactId
18 version3.6.0/version
19 exclusions
20 exclusion
21 groupIdorg.slf4j/groupId
22 artifactIdslf4j-log4j12/artifactId
23 /exclusion
24 exclusion
25 groupIdlog4j/groupId
26 artifactIdlog4j/artifactId
27 /exclusion
28 /exclusions
29 /dependencypom.xml
3、编辑配置文件application.yml 1 # 端口2 server:3 port: 80044 5 spring:6 application:7 name: cloud-payment-service8 cloud:9 zookeeper:
10 # 集群模式用逗号隔开
11 connect-string: 127.0.0.1:21814、编写主启动类
1 // 启用服务发现
2 EnableDiscoveryClient
3 SpringBootApplication
4 public class PaymentMain8004 {
5 public static void main(String[] args) {
6 SpringApplication.run(PaymentMain8004.class, args);
7 }
8 }5、编写Controller 1 RestController2 Slf4j3 public class PaymentController {4 5 Value(${server.port})6 private String serverPort;7 8 RequestMapping(value payment/zk)9 public String paymentzk(){
10 return springcloud with zookeeper serverPort \t UUID.randomUUID();
11 }
12 }6、启动项目测试
1使用地址http://localhost:8004/payment/zk 2使用zookeeper客户端连接到zookeeper服务中查看节点信息 json格式如下 1 {2 name: cloud-payment-service,3 id: 4f3db6b1-7d3a-4b3e-ac7a-159289573440,4 address: 192.168.1.4,5 port: 8004,6 sslPort: null,7 payload: {8 class: org.springframework.cloud.zookeeper.discovery.ZookeeperInstance,9 id: application-1,
10 name: cloud-payment-service,
11 metadata: {}
12 },
13 registrationTimeUTC: 1586166066913,
14 serviceType: DYNAMIC,
15 uriSpec: {
16 parts: [{
17 value: scheme,
18 variable: true
19 }, {
20 value: ://,
21 variable: false
22 }, {
23 value: address,
24 variable: true
25 }, {
26 value: :,
27 variable: false
28 }, {
29 value: port,
30 variable: true
31 }]
32 }
33 }View Code
7、测试zookeeper的服务节点是临时节点还是永久节点
通过关闭应用服务在zookeeper客户端中是用命令ls /services/cloud-payment-service
查看服务之后存在然后启动服务查看节点ID是否相同 通过测试验证zookeeper的服务节点是临时节点
搭建服务消费者
1、新建一个maven项目test-springcloud-order7999
项目结构如下 2、引入pom依赖同上与服务提供者依赖相同
3、编辑application.yml文件 1 # 端口2 server:3 port: 79994 5 spring:6 application:7 name: cloud-order8 cloud:9 zookeeper:
10 connect-string: 127.0.0.14、编写主启动类
1 SpringBootApplication
2 public class OrderMain7999 {
3 public static void main(String[] args) {
4 SpringApplication.run(OrderMain7999.class, args);
5 }
6 }5、编辑配置类注入RestTemplate对象 1 Configuration2 public class AppConfig {3 4 /**5 * 注入restTemplate请用请求rest接口6 * return7 */8 Bean9 // 标注此注解后RestTemplate就具有了客户端负载均衡能力
10 // 负载均衡技术依赖于的是Ribbon组件~
11 // RestTemplate都塞入一个loadBalancerInterceptor 让其具备有负载均衡的能力
12 LoadBalanced
13 public RestTemplate restTemplate(){
14 return new RestTemplate();
15 }
16 }6、编辑Controller 1 RestController2 Slf4j3 public class OrderController {4 5 public static final String PAYMENT_URL http://cloud-payment-service;6 7 Autowired8 private RestTemplate restTemplate;9
10 GetMapping(/consumer/payment/zk)
11 public String paymentzk(){
12 return restTemplate.getForObject(PAYMENT_URL /payment/zk, String.class);
13 }
14
15 }7、启动项目测试
1访问地址http://localhost:7999/consumer/payment/zk 2使用zookeeper客户端登录zookeeper服务器查看