基于 Gossip,新节点加入集群如何同步集群中现有数据和同步过程收到的新数据更新?
資深大佬 : tktk 0
-
项目简介: 一个分布式的 mqtt 的服务
-
场景描述: 基于 Gossip,使用的 memberlist 库,新节点加入集群,需要同步集群中已连接的客户端信息和订阅信息,同时新节点可能还会收到集群中其他节点的广播数据更新。
-
问题:
- 新节点如何保证数据的一致性,当其他节点已经存储了百万的客户端信息。新节点同步时如何处理?
- 同步现有数据时,收到的更新通知如何处理。
-
我的思路: 新节点加入后,将收到的更新数据暂时缓存直到和其他节点同步完成再开始处理更新。同步信息过大只能分批次同步。但是 gossip 协议中的推拉模式下。一定时间推拉一次,如果数据量非常大的时候网络开销太大。不说百万,即使几万的客户端信息,一次推拉也是很大的开销。如果分批次处理代码就会变复杂。所以想和大家讨论一下如何解决。
大佬有話說 (3)