Nacos服务注册与发现的原理

78 阅读1分钟

image.png

- 服务启动时就会注册自己的服务信息(服务名、IP、端口)到注册中心
- 调用者可以从注册中心订阅想要的服务,获取服务对应的实例列表(1个服务可能多实例部署)
- 调用者自己对实例列表负载均衡,挑选一个实例
- 调用者向该实例发起远程调用
 当服务提供者的实例宕机或者启动新实例时,调用者如何得知呢?
- 服务提供者会定期向注册中心发送请求,报告自己的健康状态(心跳请求)
- 当注册中心长时间收不到提供者的心跳时,会认为该实例宕机,将其从服务的实例列表中剔除
- 当服务有新实例启动时,会发送注册服务请求,其信息会被记录在注册中心的服务实例列表
- 当注册中心服务列表变更时,会主动通知微服务,更新本地服务列表

2、服务注册步骤如下: 

2.1、提供服务者引入依赖
<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2.2、配置Nacos
在yml或者properties文件中配置Nacos
  spring:
    application:
      name: # 服务名称
    cloud:
      nacos:
        server-addr: 云服务器ip:8848 # nacos地址

2.3、启动服务
访问nacos控制台,可以发现服务注册成功。

3、服务发现步骤如下
3.1、消费服务者引入依赖
<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

3.2、配置Nacos地址
spring:
  cloud:
    nacos:
      server-addr: 云服务器ip:8848

3.3、启动消费服务者