Nacos 服务注册
Nacos 服务注册时,客户端会将自己的信息注册到Nicosserver上,形成key-value组合,其中key通常是服务名称,value是实例地址信息。在二点X版本中,客户端通过Spring Boot的扩展机制(例如web_initialized事件)和springcloud提供的抽象自动配置监听器,将客户端服务注册代码整合到服务端启动过程中。根据服务类型,默认采用临时节点,即会创建定时任务每5秒钟向客户端发动一次心跳,gRPCclient向服务端注册,服务端则使用GRPC InstanceRequestHandler处理请求,若需持久化节点,则客户端会使用HTP方式进行注册,服务端通过HTTPinstancecontroller进行处理。
服务端拿到GRPC handler请求后先 集群数据同步然后注册服务事件,用于注册服务并将该服务推送消息给订阅者最后用于更新元数据信息 完成注册
nacos服务端启动
首先 在BaseRpcServer初始化时完成对gRPC客户端请求的服务进行映射监听启动偏移量微1000的服务端与客户端的通信端口与服务端进行注册中心数据同步端口
然后在ConnectionManager#start()中启动每3秒执行一次 健康检查定时任务
Nacos 服务注册时
Nacos 服务注册时,客户端会将自己的信息注册到Nicosserver上,形成key-value组合,其中key通常是服务名称,value是实例地址信息。客户端通过Spring Boot的扩展机制(例如web_initialized事件)和springcloud提供的自动装配,将Nacos-客户端的相关配置类进行自动服务。
Nacos 服务注册时即会创建定时任务每5秒钟向客户端发动一次心跳,,默认采用临时节点,通过gRPCclient向服务端注册,服务端拿到GRPC handler请求,则使用InstanceRequestHandler处理请求,在该方法中先进行集群数据的同步,然后发布注册服务事件,用于注册服务,注册服务完成后,将该服务推送消息给订阅者,最后更新服务的元数据信息
,若需持久化节点,则客户端会使用HTP方式进行注册,服务端通过HTTPinstancecontroller进行处理。
服务发现
服务发现的实现涉及到调用discoveryclient的getinstance方法,该方法最终会通过nics namingservice来获取服务注册的信息。如果参数值为true,则不仅获取服务数据,还会订阅服务的变化;若为false,则仅发起一次RPC请求获取服务数据。当服务发现调用成功后,客户端会从服务端获取到服务信息(serviceinfo),其中包含了服务名称以及对应的所有实例信息。这些实例信息会被封装并返回给调用方,以便进行本地缓存和后续的业务处理。