Nacos 自动注册原理与服务端处理逻辑
2023-10-20 15:27:09 0 举报
Nacos 自动注册原理与服务端处理逻辑
作者其他创作
大纲/内容
实现监听方法
Instance instance = parseInstance(request);
@Bean
注意点
True
包含属性
是否开启心跳任务默认开启
instance 中包含了ip、port以及是否包含心跳等信息
这里当事件被发布后,会被对应的监听器监听到,从而执行相应的代码,常用于解耦。类似于消息队列
属性
start()
volatile Notifier notifier
NacosServiceRegistry
Nacos 客户端处理注册逻辑
持有这个对象
循环放入延迟队列中
Nacos 自动注册原理
register
包装了一个BeatTask的任务,提交到线程池中去执行,这里的Period默认是5秒
父子关系
this.serviceRegistry.register(getRegistration());
配置类
监听
选择一个实现去调用put方法
EphemeralConsistencyService ephemeralConsistencyService
AbstractAutoServiceRegistration
DistroConsistencyServiceImpl
NacosServiceRegistryAutoConfiguration
final DataStore dataStore
bind(event)
实现类
父类:AbstractAutoServiceRegistrationthis.serviceRegistry = serviceRegistry;
定时任务
发起http心跳信息
InstanceController
@PostMapping
executorService.schedule
ConsistencyService consistencyService
spring容器启动
构建key
入口
前面两个作为它构造函数的参数
从请求中获取Instance参数
spring.factory
这里的Key = INSTANCE_LIST_KEY_PREFIX + EPHEMERAL_KEY_PREFIX + namespaceId + NAMESPACE_KEY_CONNECTOR + serviceName;
Instance
ServiceManager serviceManager
spring-cloud-starter-alibaba-nacos-discovery
使用代理组组装数据
NacosRegistration
new BeatTask(beatInfo)
finishRefresh
ApplicationListener<WebServerInitializedEvent>
类
DelegateConsistencyServiceImpl
前面方法中组装的数据变成 params,下面直接发起HTTP请求
调父的构造方法
onApplicationEvent
AutoServiceRegistrationProperties
注册发起HTTP请求
register 方法为真正的注册方法
spring加载factory文件注册的类
这里调调用super就进入这个类的构造方法
发布监听事件
实现了监听事件
ip、port、app、tenant
@RestController@RequestMapping(\"/nacos/v1/instance\")
判断Key的前缀
阻塞队列放任务
收藏
0 条评论
下一页