1.linux服务器安装zookeeper
具体安装见之前的博客:zookeeper入门
2.启动zookeeper
我们以一个订单服务调用支付服务为例
3.创建支付服务
pom
<dependencies>
<!-- SpringBoot整合zookeeper客户端 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
<!--先排除自带的zookeeper3.5.3-->
<exclusions>
<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>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>top.xkuna</groupId>
<artifactId>cloud-api-commons</artifactId>
<version>${project.version}</version>
</dependency>
<!-- SpringBoot整合Web组件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</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>
此时我们需要注意的是zookeeper的依赖版本要大于等于服务器的zookeeper版本,所以我们将spring-cloud-starter-zookeeper-discovery
依赖中的zookeeper排除,然后导入大于等于服务器的zookeeper版本的依赖
建议看完下面的步骤 在服务启动前 再看踩坑点
———————踩坑点——————————
关于slf4j-log4j12的冲突
spring-boot-starter-web
依赖中含有log4j及其他相关的jar包
与zookeeper依赖(不是starter的zookeeper,是后来单独引入的zookeeper)自带的slf4j-log4j12
jar包冲突
那么我们不处理的情况下,启动会报错
解决的办法有两个:
1.将zookeeper的slf4j-log4j12
排除
修改后启动成功 无其他的报错
2.修改zookeeper和 web 依赖的顺序,先导入 web的依赖,再导入zookeeper的依赖
此时 ,会报绑定错误,但是不影响服务的启动
yml
创建主启动类
注意需要在主启动类 打上 @EnableDiscoveryClient
注解
创建controller
启动服务
如果出现报错先看上面写的pom方面及踩坑点
启动成功查看zookeeper
查看根节点 发现多了 /service节点
/service
节点是我们的服务节点
service节点下便是我们注册进的cloud-provider-payment
服务节点
继续查看
看到的则是我们的支付服务注册进的正在运行的一个子服务,如果我们注册的支付服务是服务集群 此时在cloud-provider-payment
服务节点下有多个子服务节点
我们获取该子服务的信息
我们复制查看json,发现json中含有该子服务的信息
我们试想该服务节点是临时节点还是持久节点
我们关掉服务查看发现支付服务列表为空 说明服务节点为临时节点
4.创建订单服务
pom
<dependencies>
<!-- SpringBoot整合Web组件 -->
<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>
<!--先排除自带的zookeeper-->
<exclusions>
<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-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
创建主启动类
创建restTempalte配置类
创建controller 调用支付服务
启动订单服务
启动成功后查看zookeeper是否注册了该服务
使用postman测试订单服务调用支付服务
5.结束语
此时zookeeper服务注册中心 简单的服务之间调用就实现了
是不是很简单呢~~ 😄😄