Nacos服务注册是微服务的核心,下面我重点来详解Nacos服务注册@mikechen
Nacos服务注册
服务注册:指的是服务实例在启动后,将自己的信息(如:服务名、IP 地址…等),注册到服务注册中心的过程。
如下图所示:
Nacos服务注册原理
在微服务架构中,一个系统往往包含几十、上百个服务,服务实例随容器动态扩缩、上下线,IP 和端口不断变化。
这就带来了几个挑战:
服务地址动态变化,难以硬编码维护;
服务实例弹性伸缩,调用方无法感知;
需要具备服务健康检查与故障剔除能力;
Nacos 服务注册与发现,正是为了解决这些问题而生。
Nacos作为服务注册中心,主要通过客户端与服务端的交互实现服务注册。
流程包括以下关键步骤:
首先,服务实例启动 → 向Nacos Server注册服务信息。
namingService.registerInstance("order-service", "192.168.1.10", 8080);
注册信息包括:
-
服务名(例如:
order-service
); -
IP 地址 + 端口(例如:
192.168.1.10:8080
); -
是否为临时实例(默认是临时);
-
元数据(Metadata);
然后,存储注册信息。
Nacos 接收到注册请求后,会将服务信息写入本地内存 + 持久化存储。
然后,定时发送心跳 → 保持服务状态为健康。
Nacos 会在内部维护一个服务列表,并记录每个实例的最后心跳时间。
如果连续多个周期未收到心跳(默认 15 秒),Nacos 会将实例标记为不健康。
如果持续失联一段时间(默认 30 秒),实例将被剔除。
服务实例关闭 → 发送注销请求或心跳超时被剔除。
最后,服务调用。
服务消费者查询或订阅服务列表 → 动态获取可用实例,负载均衡调用服务实例。