Nacos服务注册与发现的原理

232 阅读2分钟

一、Nacos简介

Nacos是一个基于云原生的动态服务发现、配置管理和服务治理平台,由阿里巴巴开源。它提供了服务注册与发现、配置管理、动态DNS、流量管理、服务降级、负载均衡、限流、路由管理等一系列核心功能,帮助企业构建弹性可扩展的微服务架构‌。

总的来说,Nacos是一个动态服务发现、配置管理和服务管理平台,它在微服务架构中扮演着服务注册与发现的核心角色。

二、服务注册和发现

服务注册

  1. 客户端注册‌:当服务实例启动时,它会通过Nacos客户端与Nacos服务端建立连接,并通过HTTP协议向Nacos服务端发送注册请求,请求中包含服务名、IP地址、端口、健康检查URL等信息‌。
  2. 服务端处理‌:Nacos服务端接收到注册请求后,将服务实例信息存储到内存中,并持久化到数据库中。服务端会定期对已注册的服务实例进行健康检查,确保服务实例可用‌。

服务发现

  1. 服务消费者‌:当服务消费者需要调用服务提供者时,它会向Nacos服务端发送服务发现请求‌。
  2. 服务端响应‌:Nacos服务端接收到服务发现请求后,返回所有可用的服务实例列表‌。
  3. 负载均衡‌:服务消费者根据某种负载均衡策略(如随机、轮询等)从服务实例列表中选择一个服务实例进行调用‌。

注册中心、服务提供者、服务消费者三者间关系如下:

微信图片_20241011210852.png

三、服务注册实现

  1. 启动并登录Nacos,地址:IP+端口号/nacos/,首次访问会跳转到登录页,账号密码都是nacos
  2. 将服务注册到Nacos,步骤如下:
  • 引入依赖
<!--Nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • 配置Nacos地址
spring:
  application:
    name: job-service # 服务名称
  cloud:
    nacos:
      server-addr: ip:端口号 # Nacos地址
  • 重启 ​
  1. 访问nacos控制台,查看服务是否注册成功。 ​

四、服务发现

服务的消费者要去nacos订阅服务,这个过程就是服务发现,步骤如下:

  • 引入依赖:服务发现除了要引入Nacos依赖以外,由于还需要负载均衡,因此要引入SpringCloud提供的LoadBalancer依赖。
<!--负载均衡器-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
<!--nacos 服务注册发现-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
  • 配置Nacos地址
spring:
  cloud:
    nacos:
      server-addr: 192.168.150.101:8848
  • 发现并调用服务