微服务SpringCloud开弓之Zookeeper服务注册与发现《四》
2020-05-04 12:16
1181 查看
目录
Eureka停止更新了
SpringCloud整合Zookeeper替代Eureka
1、注册中心Zookeeper
-
关闭Linux服务器防火墙后启动Zookeeper服务器
//临时关闭 service iptables stop //禁止开机启动 chkconfig iptables off
-
Zookeeper服务器取代Eureka服务器,zk作为服务注册中心
2、服务提供者
1、新建cloud-provider-payment8004
2、POM
spring-cloud-starter-zookeeper-discovery
</parent> <modelVersion>4.0.0</modelVersion> <artifactId>cloud-provider-payment8004</artifactId> <description>Zookeeper服务提供者</description> <dependencies> <dependency> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--SpringBoot整合Zookeeper客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> </project>
3、YML
server: # 8004表示注册到zookeeper服务器的支付服务提供者端口号 port: 8004 spring: application: # 服务别名---注册zookeeper到注册中心的名称 name: cloud-provider-payment cloud: zookeeper: # 默认localhost:2181 connect-string: localhost:2181
4、主启动类
@SpringBootApplication @EnableDiscoveryClient public class PaymentMain8004 { public static void main(String[] args) { SpringApplication.run(PaymentMain8004.class,args); } }
5、Controller
@RestController @Slf4j public class PaymentController { @Value("${server.port}") private String serverPort; @RequestMapping(value = "payment/zk") public String paymentZk() { return "SpringCloud with zookeeper:" + serverPort + "\t" + UUID.randomUUID().toString(); } }
6、启动8004注册进zookeeper zkServer.sh start
- 报错
- 原因
解决zookeeper版本jar包冲突问题
- 重新弄Pom文件
<dependencies> <dependency> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--SpringBoot整合Zookeeper客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <exclusions> <!--先排除自带的zookeeper3.5.3--> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <!--添加zookeeper3.4.9版本--> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
-
验证
http://localhost:8004/payment/zk
{ "name": "cloud-provider-payment", "id": "6c79f953-21dd-4d45-9dc4-d4e05faaf1de", "address": "localhost", "port": 8004, "sslPort": null, "payload": { "@class": "org.springframework.cloud.zookeeper.discove.ZookeeperInstance", "id": "application-1", "name": "cloud-provider-payment", "metadata": {} }, "registrationTimeUTC": 1586592028753, "serviceType": "DYNAMIC", "uriSpec": { "parts": [ { "value": "scheme", "variable": true }, { "value": "://", "variable": false }, { "value": "address", "variable": true }, { "value": ":", "variable": false }, { "value": "port", "variable": true } ] } }
服务节点是临时节点
3、服务消费者
-
新建cloud-consumerzk-order80
-
POM
<dependencies> <dependency> <groupId>com.atguigu.springcloud</groupId> <artifactId>cloud-api-common</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--SpringBoot整合Zookeeper客户端--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> <exclusions> <!--先排除自带的zookeeper3.5.3--> <exclusion> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </exclusion> </exclusions> </dependency> <!--添加zookeeper3.4.9版本--> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies>
-
YML
server: port: 80 spring: application: # 服务别名 name: cloud-consumer-order cloud: zookeeper: # 注册到zookeeper地址 connect-string: 192.168.149.103:2181
-
主启动
@SpringBootApplication @EnableDiscoveryClient public class OrderZkMain80 { public static void main(String[] args) { SpringApplication.run(OrderZkMain80.class, args); } }
-
业务类
1、配置been
@Configuration public class ApplicationContextConfig { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } }
2、controller
@RestController @Slf4j public class OrderZkController { public static final String INVOKE_URL = "http://cloud-provider-payment"; @Resource private RestTemplate restTemplate; /** * http://localhost/consumer/payment/zk * * @return */ @GetMapping("/consumer/payment/zk") public String paymentInfo() { return restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class); } }
-
验证测试
欢迎转载和分享,记得点赞呀
相关文章推荐
- springcloud之服务注册与发现(zookeeper注册中心)-Finchley.SR2版
- SpringCloud之服务注册发现(Spring Cloud Zookeeper) |第十五章 -yellowcong
- 使用Spring Cloud Zookeeper实现服务的注册和发现
- zookeeper服务发现实战及原理--spring-cloud-zookeeper源码分析
- 一起来学Spring Cloud | 第二章:服务注册和发现组件 (Eureka)
- 每天学点SpringCloud(二):服务注册与发现Eureka
- Spring Cloud构建微服务架构(一)服务注册与发现
- SpringCloud-Nacos-服务注册中心-服务发现HelloWorld(服务之间数据的调用RestTemplate)
- SpringCloud系列——Eureka 服务注册与发现
- 1.SpringCloud简单搭建--服务的注册与发现Eureka(Finchley版本)
- Spring Cloud 入门教程 - Eureka服务注册与发现
- Spring Cloud Eureka 服务注册与发现
- SpringCloud服务注册与发现(Eureka 注册中心)
- 探索SpringCloud 二(服务注册和发现)
- Spring Cloud Alibaba练习Demo(一):使用Nacos实现服务注册与发现
- springcloud(第三篇)springcloud eureka 服务注册与发现
- Spring Cloud 学习之旅 --- 服务注册与发现(二)
- 《Spring Cloud Netflix》-- 服务注册和服务发现-Eureka的服务认证和集群
- Spring Cloud 微服务注册与发现
- springboot + zookeeper的服务注册与发现中通信问题