Nacos服务发现与注册源码剖析.pdf
Nacos服务发现与注册源码剖析 Nacos是一款流行的服务注册和发现组件,由阿里巴巴开源,广泛应用于微服务架构中。在本文中,我们将深入剖析Nacos的服务发现和注册机制,解读其源码实现细节。 服务注册 Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。 服务心跳 在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。 服务健康检查 Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)。 服务发现 服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存。 服务同步 Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。 Nacos核心功能点 1. 服务注册:Nacos Client注册自己的服务到Nacos Server。 2. 服务心跳:Nacos Client维护一个定时心跳来持续通知Nacos Server。 3. 服务健康检查:Nacos Server检查注册服务实例的健康情况。 4. 服务发现:服务消费者从Nacos Server获取服务清单。 5. 服务同步:Nacos Server集群之间同步服务实例。 Nacos服务注册表结构 Nacos服务注册表结构为Map<namespace, Map<group::serviceName, Service>>,其中namespace为命名空间,group::serviceName为服务分组和服务名称,Service为服务实例信息。 Nacos源码架构图 Nacos源码架构图显示了Nacos的总体结构,包括Console模块、Config模块、Naming模块等。 Nacos服务端源码单机运行 要单机运行Nacos服务端源码,需要下载Nacos源码,选择Tag 1.1.4版本源码,整体结构包括Console模块、Config模块、Naming模块等。然后,直接运行Console模块里的com.alibaba.nacos.Nacos.java,并增加启动vm参数,注意nacos.home目录要改成你自己源码对应的distribution模块目录。 结论 通过剖析Nacos的服务发现和注册机制,我们可以更好地理解Nacos的核心功能点和实现细节,从而更好地应用Nacos在微服务架构中。同时,了解Nacos的源码架构图和服务注册表结构也可以帮助我们更好地理解Nacos的实现机理。