Spring Cloud 使用 Nacos 作注册中心
文章 《Spring Cloud 使用 Nacos 作配置中心》 描述了如何在 Spring Cloud 使用 Nacos 作配置中心的使用方法,本文在此基础上,使用 Nacos 作为 Spring Cloud 的注册中心。
安装 Nacos
为简单起见,这里使用单机版本的 Nacos Server 作为注册中心,安装过程可以参考 《Spring Cloud 使用 Nacos 作配置中心》。
服务提供者
服务提供者在文章 《Spring Cloud 使用 Nacos 作配置中心》 源代码 springcloudstudy
基础上进行开发。其中,springcloudstudy
作为父项目,服务提供者 nacosprovider
作为子项目。
添加 nacosprovider
的依赖:
1 | <dependency> |
其中,依赖 spring-cloud-starter-alibaba-nacos-discovery
用于连接 Nacos Server 注册中心。
bootstrap.yml
配置 Nacos Server 地址,以及服务名称:
1 | server: |
spring.application.name
用于配置服务名称,这个名称会在 Nacos 控制台服务列表上展示。
在 Spring Boot 启动主类添加 @EnableDiscoveryClient
注解,开启服务注册功能:
1 |
|
增加 controller 接口:
1 |
|
服务消费者
添加服务消费者 nacosconsumer
的依赖:
1 | <dependency> |
其中,依赖 spring-cloud-starter-openfeign
用于使用 feign 客户端调用服务接口。
nacosconsumer
的 bootstrap.yml
配置:
1 | server: |
其中,服务名称 spring.application.name
配置为 nacos-consumer
。
调用服务提供者
在启动主类添加 @EnableFeignClients
注解启用 feign 客户端的使用,添加 @EnableDiscoveryClient
注解开启服务注册功能:
1 |
|
使用注解 @FeignClient
定义 feign 客户端,将远程服务 http://nacos-provider/echo/
映射为本地方法调用:
1 |
|
Feign 客户端能将服务名称 nacos-provider
映射为 nacosprovider
的地址,这是由于 nacosconsumer
和 nacosprovider
都已经连接上了 Nacos Server 注册中心,nacosconsumer
可以从注册中心获取 nacosprovider
的 ip 和端口。
nacosconsumer
提供 controller 接口,以测试调用 nacosprovider
接口:
1 |
|
其中,通过 @Autowired
注解,使用上面定义的 feign 客户端。可以看到 ,通过 feign 客户端,调用远程服务接口就像调用本地方法一样。
启动 nacosconsumer
和 nacosprovider
后,可以看到 Nacos 控制台服务列表显示出两个服务:
调用接口 http://127.0.0.1:8070/echo/leehao.me
,返回:
Hello Nacos Discovery leehao.me
附:源代码
完整的源代码请参考:
https://github.com/haozlee/springcloudstudy
参考资料
- https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
- https://leehao.me/Spring-Cloud-%E4%BD%BF%E7%94%A8-Nacos-%E4%BD%9C%E9%85%8D%E7%BD%AE%E4%B8%AD%E5%BF%83/
- https://nacos.io/zh-cn/docs/quick-start.html
- https://www.icode9.com/content-4-794628.html
- https://blog.csdn.net/andy_zhang2007/article/details/86680622