1.注册中心原理
(1)Nacos服务注册中心流程
2.Nacos数据模型
(1)分级模型
Nacos的服务分级模型是一种服务-集群-实例的三层模型。Nacos 的数据模型虽然相对复杂,但是并不强制使用它里面的所有数据
跨服务调用原则:服务调用尽可能选择本地集群的服务,跨集群调用延迟较高。本地集群不可访问时,再去访问其它集群
层级 | 描述 |
---|---|
服务 | 提供某种功能的服务 |
集群 | 是同一机房内的实例的集合,一般以地区划分 |
实例 | 代表服务的一个运行节点,以IP:端口区分实例 |
(2)逻辑隔离模型
Nacos 提供了四层的数据逻辑隔离模型,用户账号对应的可能是一个企业或者独立的个体,这个数据一般情况下不会透传到服务注册中心。一个用户账号可以新建多个命名空间,每个命名空间对应一个客户端实例,这个命名空间对应的注册中心物理集群是可以根据规则进行路由的,这样可以让注册中心内部的升级和迁移对用户是无感知的,同时可以根据用户的级别,为用户提供不同服务级别的物理集群。再往下是服务分组和服务名组成的二维服务标识,可以满足接口级别的服务隔离
命名空间通常用于隔离开发、测试和生产等不同环境。Group并不常用
(3)临时实例和非临时实例
Nacos 2.0 中支持持久化及非持久化的设定,Nacos2.0 将是否持久化的数据抽象至服务级别,且不再允许一个服务同时存在持久化实例和非持久化实例,实例的持久化属性继承自服务的持久化属性
实例类型 | 描述 |
---|---|
临时实例 | 采用心跳检测(提供服务者每隔一段时间发送一个请求到Nacos),若提供服务者没有心跳了,Nacos将从服务列表中将该服务删除 |
非临时实例 | Nacos主动发送请求到提供服务者询问健康状态,若服务不健康,Nacos不会将服务从服务列表中删除,而是将服务标记为不健康 |
3.将服务注册到Nacos
(1)添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
(2)在配置文件中添加配置
spring:
application:
# 服务名称
name: 服务名称
cloud:
# nacos配置
nacos:
# Nacos服务端地址
server-addr: IP:端口
# 服务注册
discovery:
# 集群名称
cluster-name: 集群名称
# 命名空间ID
namespace: 命名空间ID
# 是否是临时实例
ephemeral: 默认true
(3)启动服务,在Nacos上查看注册结果