一、Nacos简介
Nacos是一个基于云原生的动态服务发现、配置管理和服务治理平台,由阿里巴巴开源。它提供了服务注册与发现、配置管理、动态DNS、流量管理、服务降级、负载均衡、限流、路由管理等一系列核心功能,帮助企业构建弹性可扩展的微服务架构。
总的来说,Nacos是一个动态服务发现、配置管理和服务管理平台,它在微服务架构中扮演着服务注册与发现的核心角色。
二、服务注册和发现
服务注册
- 客户端注册:当服务实例启动时,它会通过Nacos客户端与Nacos服务端建立连接,并通过HTTP协议向Nacos服务端发送注册请求,请求中包含服务名、IP地址、端口、健康检查URL等信息。
- 服务端处理:Nacos服务端接收到注册请求后,将服务实例信息存储到内存中,并持久化到数据库中。服务端会定期对已注册的服务实例进行健康检查,确保服务实例可用。
服务发现
- 服务消费者:当服务消费者需要调用服务提供者时,它会向Nacos服务端发送服务发现请求。
- 服务端响应:Nacos服务端接收到服务发现请求后,返回所有可用的服务实例列表。
- 负载均衡:服务消费者根据某种负载均衡策略(如随机、轮询等)从服务实例列表中选择一个服务实例进行调用。
注册中心、服务提供者、服务消费者三者间关系如下:
三、服务注册实现
- 启动并登录Nacos,地址:IP+端口号/nacos/,首次访问会跳转到登录页,账号密码都是nacos。
- 将服务注册到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地址
- 重启
- 访问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
- 发现并调用服务