nacos服务注册与发现
使用Ribbon、OpenFeign作为远程调用的基础组件,然后将eureka服务注册中心替换为nacos。
# 一、微服务整合nacos服务发现
- spring-cloud-starter-alibaba-nacos-discovery是spring-cloud-alibaba-dependencies子项目。所以它们的版本号都不需要我们手动维护,继承自父项目dependencyManagement中的定义。
- 因为我们之前使用了eureka,所以用nacos的spring-cloud-starter-alibaba-nacos-discovery将spring-cloud-starter-netflix-eureka-client在pom文件中替换掉
- spring-cloud-starter-alibaba-nacos-discovery也默认包含了spring-cloud-starter-netflix-ribbon,不需要单独引入。我们之前学习的所有的ribbion和openfeign相关的负载均衡、远程服务调用的知识在nacos下依然适用。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
在application.yml中加入必要的服务注册中心信息配置我们上一篇文章中搭建的nacos的服务注册中心的地址192.168.161.6:8848。(删掉eureka配置)
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.161.6:8848
1
2
3
4
5
2
3
4
5
加上EnableDiscoveryClient注解(去掉EnableEurekaClient注解),开启Spring Cloud的服务注册与发现功能。

在aservice-sms服务提供者和aservice-rbac服务调用者中将以上的三个动作完成,我们就成功的将eureka客户端替换为nacos-discovert客户端了。我们访问nacos服务,通过服务管理->服务列表,看到我们注册的服务已经在列表中。

# 四、结果验证
服务注册成功了,剩下的就是服务之间实现远程调用的实现及测试了。Ribbon和OpenFeign现在已经做到了服务注册中心的无关性,也就是说:不论你用nacos、zookeeper、consul、eureka哪一个服务注册中心,OpenFeign和Ribbon的使用方式几乎都没有区别。
- 简单的实现例子参考:《Hello-microservice》中《第一个微服务调用》
- 深入理解学习参考:《远程服务调用》那一章
需要注意的是:我们使用openfeign进行远程服务调用,服务名称应该是和spring.applicatopn.name定义一致的。(这点与Eureka不同,eureka是将服务名称转成大写字母)
//@FeignClient("ASERVICE-SMS")
@FeignClient("aservice-sms")
public interface SmsService {
@PostMapping(value = "/sms/send")
AjaxResponse send(@RequestParam("phoneNo") String phoneNo,
@RequestParam("content") String content);
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
上次更新: 2022/06/13, 18:30:58