nacos注册模块-从客户端到服务端源码流程
2022-01-17 10:04:39 1 举报
nacos注册模块-从客户端到服务端源码流程
作者其他创作
大纲/内容
InstanceController
putService(service)
updateIps
putServiceAndInit(service)
服务端
beatReactor.addBeatInfo添加心跳,定时任务
DistroConsistencyServiceImpl#put
服务注册
源码精髓:异步任务及内存队列操作,提高效率
serverProxy.queryList
client
注:实际上服务发现是在第一次调用服务接口时根据服务名去服务端获取的,详情见ribbon源码
serverProxy.sendBeat
InstanceController#deregister
ClientBeatCheckTask
实现
某实例超过30s没收到心跳
DelegateConsistencyServiceImpl#put
1.将注册实例更新到内存注册表
NacosServiceRegistryAutoConfiguration
serviceManager.removeInstance
beat
缓存为空,则更新
如果是临时实例
ephemeralInstances = toUpdateInstances
NacosServiceRegistry
this.start()
this.serviceRegistry.register(getRegistration())
com.alibaba.nacos.naming.core.InstanceOperatorServiceImpl#registerInstance
获取服务端的服务实例缓存信息
reqApi /instance/beat POST
register()
getRegistration()依赖
源码精髓:nacos为防止读写并发冲突,运用CopyOnWrite思想Erureka使用注册表的多级缓存结构,只读缓存,读写缓存,内存注册表,各级缓存定时同步,客户端感知及时性不如nacos
distroProtocol.sync
register
服务发现
allInstances.addAll(persistentInstances); allInstances.addAll(ephemeralInstances);
返回结果是注册时写入的实例属性
异步执行
更新临时注册实例
this.serviceRegistry依赖
@Bean
本地请求 /instance DELETE
某实例超过15s没收到心跳
mapConsistencyService(key)
NacosNamingService#getAllInstances
将新注册实例添加到对应服务service列表中
HealthCheckReactor.scheduleCheck
deleteIp(instance)
客户端服务注册流程
instance.setHealthy(false)
向阻塞队列添加注册实例数据
handle(pair)
getInstanceOperator().registerInstance
createEmptyService
service.init()
实现ApplicationListener接口的类,spring容器启动时会自动调用处理事件方法
定时任务,更新缓存
NacosRegistration
onApplicationEvent
int target = distroHash(responsibleTag) % servers.size()
AbstractAutoServiceRegistration
list
利用服务名称hash后对对服务器取模,确定执行任务的机器
调用server端服务发现接口传参中含有客户端的udp端口,方便服务端实例变化后通过udp同步给客户端
ApplicationContextAware
reqApi /instance POST
List<Instance> srvedIps = service.srvIPs
NacosAutoServiceRegistration
syncToTarget
reqApi /instance/list GET
是
hostReactor.getServiceInfo
bind
if (instance.isEphemeral())
继承
定时执行任务
2.同步实例信息到其他节点
getInstanceOperator().listInstance
run方法
serverProxy.registerService
getDistroMapper().responsible(service.getName())
0 条评论
回复 删除
下一页