SpringCloud系列文章列表
0. SpringCloud实战专栏介绍准备
1. SpringCloud父工程搭建
2. 服务注册中心之Eureka(单机+集群+Ribbon调用)
3. 服务注册中心之Zookeeper
4. 服务注册中心之Consul
5. eureka、zookeeper和consul三种注册中心之间的区别
6. 负载均衡服务调用之Ribbon
7. 服务调用之OpenFeign
8. Hystrix断路器全面实战总结
9. SpringCloud Gateway网关
10. SpringCloud Config配置中心
11. SpringCloud Bus消息总线
12. SpringCloud Stream消息驱动
13. SpringCloud Sleuth分布式请求链路追踪
安装Zookeeper
1、普通安装可以参考之前的一篇文章 https://blog.csdn.net/shuai8624/article/details/96208766
本次采用下面的docker安装
2、docker安装
#下载镜像并启动
docker run --name some-zookeeper -d zookeeper:3.6
#连接zookeeper
docker exec -it 容器id zkCli.sh
如上图可以看到当前就一个/zookeeper节点;
项目构建
服务提供者为 cloud-provider-zookeeper8004
消费者为 cloud-consumerzk-order80
新建子工程,工程名为cloud-provider-zookeeper8004
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>SpringCloudDemo</artifactId>
<groupId>com.chouxiaozi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-provider-zookeeper8004</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!--zookeeper-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 8004
spring:
application:
name: provider-zookeeper
cloud:
zookeeper:
connect-string: 106.54.142.196:2181
注释:如果zookeeper是集群的话;之间逗号隔开
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderZookeeperMain8004 {
public static void main(String[] args) {
SpringApplication.run(ProviderZookeeperMain8004.class, args);
}
}
写个web接口便于测试
@RestController
public class PaymentController {
@Value("${server.port}")
private Integer serverPort;
@GetMapping("/payment/zk")
public String paymentZk(){
return "springcloud with zookeeper: "+serverPort+"\t"+ UUID.randomUUID().toString();
}
}
启动项目,测试接口没问题
查看zookeeper节点如下;服务注册成功;
新建子工程,cloud-consumerzk-order80;
pom.xml(跟服务提供者一样)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>SpringCloudDemo</artifactId>
<groupId>com.chouxiaozi</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cloud-consumerzk-order80</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
</dependencies>
</project>
application.yml
server:
port: 80
spring:
application:
name: consumerzk-order80
cloud:
zookeeper:
connect-string: 106.54.142.196:2181
启动类
@SpringBootApplication
@EnableDiscoveryClient
public class ConsumerZkOrderMain80 {
public static void main(String[] args) {
SpringApplication.run(ConsumerZkOrderMain80.class, args);
}
}
RestTemplate配置类
@Configuration
public class RestTemplateConfig {
@Bean
@LoadBalanced
RestTemplate restTemplate(){
return new RestTemplate();
}
}
写个web接口便于测试
@RestController
public class ConsumerOrderController {
private final String paymentUrl = "http://provider-zookeeper";
@Autowired
RestTemplate restTemplate;
@GetMapping("/consumer/payment/zk")
public String order(){
return restTemplate.getForObject(paymentUrl+"/payment/zk",String.class);
}
}
启动消费者;查看zookeeper如下图,消费者注册成功
接口测试
如图调用成功;
点赞+评论+关注
本文源码地址: https://gitee.com/shuaidawang/SpringCloudDemo.git
有错误的地方欢迎指正!可以加入qq交流群: 700637673