💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
## 一、微服务向zookeeper注册 ### 引入依赖包 在之前的章节已经为大家介绍过微服务向eureka注册的实现过程,大同小异。首先我们需要通过maven坐标引入zookeeper的包。 > 如果项目pom之前存在spring-cloud-starter-netflix-eureka-client,与eureka相关的要删掉。 ~~~ <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-zookeeper-discovery</artifactId> </dependency> ~~~ ### 配置zookeeper 有过eureka和我们安装zookeeper集群的经验,下面的配置都很好理解。 ~~~ spring: cloud: zookeeper: connectString: 192.168.161.3:2181,192.168.161.4:2181,192.168.161.5:2181 discovery: register: true prefer-ip-address: true enabled: true ~~~ 特别说一下 prefer-ip-address这个配置,如果不设置为true。服务注册的时候注册的访问地址是当前服务运行所在的主机的hostname(所以通常需要配置/etc/hosts才能正确的实现ip与主机hostname映射,才能正确的进行远程服务调用) ![](https://img.kancloud.cn/61/d0/61d09ee08a9d4afb309f1b97305e9735_1170x102.png) 设置 prefer-ip-address: true之后,服务注册的时候注册的访问地址是当前服务运行所在的主机的ip.(不用配置/etc/hosts,即可正确实现远程服务调用) ![](https://img.kancloud.cn/f7/d2/f7d2a0ce8b65164ab42fccdbf3a10fa1_1164x74.png) ### 打开discovery开关 如果关于该注解的理解有问题,请参考《DiscoveryClient服务发现》。 ![](https://img.kancloud.cn/68/7e/687e2bc115896f460fd208b782529662_962x277.png) **以上的步骤,在所有需要向zookeeper注册的服务上都要进行**。如:aservice-rbac、aservice-sms ## 二、验证服务注册结果 zookeeper官方并不提供web管理界面(有一些第三方开发的)。所以我们通过命令行来查看服务注册的结果。 ~~~ zkCli.sh -server 192.168.161.3:2181 ~~~ 我们之前已经给大家介绍过,zookeeper的数据存储结果是按目录的树形结构。所以,看下面的命令: ![](https://img.kancloud.cn/c4/d8/c4d88ee28039abe3f4c3d1b96021d970_1126x246.png) * 通过ls查看目录,“/”根目录,“/services”服务注册根目录,“/services/aservice-sms”的服务注册信息。 * 通过get命令查看具体的服务注册实例信息 通过上面的命令进一步认证我们的zookeeper集群安装的正确性。 ## 三、FeignClient远程服务名称调整 ![](https://img.kancloud.cn/48/ec/48ecfaf73c4cd718d7836ff514b1014d_702x146.png) 需要注意的是,[zookeeper注册的服务名称是spring.application.name](http://xn--zookeeperspring-c94yt8kh0h7t4h1vdmt4blg8b0pq.application.name/),但是并不会将服务名称转成大写,这点与eureka有所区别。所以在使用FeignClient的时候,不能写“ASERVICE-SMS”,而是写“aservice-sms”。 ## 四、访问测试 访问aservice-rbac的“/pwd/reset”接口(该接口中远程调用了aservice-sms的“/sms/send”短信发送方法),得到正确结果。说明我们的集群安装及服务注册发现全部可以正确的使用。 ![](https://img.kancloud.cn/2c/58/2c58608057fed2f1eeec6b658adb9a31_1498x577.png)