-
Notifications
You must be signed in to change notification settings - Fork 80
Open
Labels
Description
大部分服务节点都部署在同一子网内,节点间通信不需要经过多级路由转换,通信效率会非常高。
所以可以考虑直接通过节点间通信来同步状态,大概思路如下:
- 初始化driver时,传入所有节点ip:port列表。
- 服务启动阶段每个节点依次与其他节点建立 rpc 连接,连接成功后当前节点保存所有节点状态。
- Job 执行判定阶段,直接通过 rpc 获取目前所有节点状态,如状态列表与上次不一致则重建 hash 环。
- 一致性hash选举执行节点。
这么做的优势在于可以去掉存储依赖,并且状态同步将更精准,不会产生心跳周期导致的瞬间状态不一致情况。
当然如果存在节点间跨机房等情况,不适用该 driver。
ailose