1 Application Service
1.1 register
Application Service
把自己注册到 Eureka Server 上去,用 jersey client 和 Eureka Server 通信eureka-client:
eureka-server:
1.2 renew
Application Service
每隔 30 秒发 heartbeat 给 Eureka Server 通知他自己还活着eureka-client:
eureka-server:
1.3 cancel
服务shutdown,通知 Eureka Server 删除 service’s instance
eureka-client:
eureka-server:
1.4 get registry
Eureka clients fetches the registry information from the server and caches it locally.
分成 全量获取和增量获取。
Eureka Client 启动时,首先执行一次全量获取进行本地缓存注册信息
Eureka Client 在初始化过程,创建获取注册信息线程,固定间隔(30秒)向 Eureka Server 发起获取注册信息( fetch ),刷新本地注册信息缓存。eureka-client:
eureka-server:
2 Application Client
2.1 get registry
同上 get registry
3 Eureka Server
3.1 大致流程:
Eureka-Server启动 大致流程:
3.2 register
Eureka-Server register流程:
Eureka-Server 是 AP
Eureka Server 集群不区分主从节点,所有节点完全对等。
Eureka Client 可以向任意 Eureka-Client 发起任意读写操作,Eureka-Server 将操作复制到其它的 Eureka-Server 以达到最终一致性。Eureka-Server启动 具体流程:
3.3 replicateToPeers
"大致流程" 图中的 replicateToPeers 方法,请求方可以是 Eureka Client 发起请求,也可以是 Eureka Server 发起同步请求。
处理的 Action 类型: Heartbeat, Register, Cancel, StatusUpdate, DeleteStatusOverride;
以 Action.register为例发起 replicateToPeers:
接收 replicateToPeers:
处理 replicateToPeers 响应结果:
"发起 replicateToPeers" 图中: 处理批量提交同步操作任务的响应,handleBatchResponse
3.4 版本控制
注册时:
注册 应用实例 InstanceInfo时,比较请求的应用实例 与 Eureka Server 端该应用实例的 lastDirtyTimestamp 大小。
请求方可能是 Eureka Client发起注册请求,也可能是 Eureka Server 发起同步请求
只有请求方 > Eureka-Server 方时,覆盖 Eureka-Server 方应用实例。
最终更新应用实例 lease 的更新时间。
Heartbeat 最终一致性
Eureka Client 每30秒发送 Heartbeat 给 Eureka Server,告知对方自己存活。
多次执行失败,达到 lease 时效 90 秒,删除应用实例。