服务注册发现:Eureka源码剖析(3)服务注册
Eureka Client启动流程
1 | public class ExampleEurekaClient { |
其实这部分已经在上篇文章剖析过了,这里直接出总结
服务注册/03-eureka-client%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B.jpg)
Eureka Client是如何进行服务注册的
- 在eureka-client实例化的最后一步,启动了一个实例信息复制器,默认40秒之后开始执行,这个定时任务逻辑如下
1 | public void start(int initialDelayMs) { |
Eureka Server是如何完成服务注册的
- 上一步客户端发起服务注册后,ApplicationResource#addInstance 会接收到请求,最终将请求转给PeerAwareInstanceRegistry.register
- 进行注册
- 将请求送上来的实例信息放到自己的服务注册表中
ConcurrentHashMap<String, Map<String, Lease<InstanceInfo>>> registry - 将服务实例放到最近注册队列(recentRegisteredQueue)中去
- 将服务实例放到最近变更队列(recentlyChangedQueue)中去
- 过期ResponseCache
- 将请求送上来的实例信息放到自己的服务注册表中
- 同步注册到其他节点
总结
服务注册/eureka%E7%9A%84%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E7%9A%84%E6%B5%81%E7%A8%8B.png)