常见集群算法解析

Gossip协议   流行病协议,流言协议

  分布式网络,无集中管理节点;节点间点对点传播信息。

  P2P,BITCOIN,REDIS CLUSTER 等等

  简单:

    扩展性:网络节点可任意增加或修改

    容错性:无中心节点,任意节点宕机不影响协议运行

    去中心化:任意节点都能发送消息

  最终一致性问题:

    需要花费一定时间达到最终一致性

    消息冗余

    不适合大规模集群

    恶意节点传播垃圾信息

  direct mail :通知所有邻居更新信息,邻居节点收到消息后不会转发

    简单

    难以达到最终一致性、容错性低、种子节点压力大。

    社交网络

   anti entropy:集群中的节点每隔一段时间随机选择一个节点互相交换所有数据,然后进行数据同步,消除数据不一致。

    最终一致性

    信息同步成本高、达到最终一致耗时长。

    存储系统多副本一致

  rumor mongering:收到更新消息后,成为受感染节点,周期性的传播更新消息,如果发现其他节点已经知道了消息则按照一定概率将自己变为removed,不再传播消息。

    最终一致性,传播信息少,达到最终一致性耗时少。

    一定概率可能不一致,节点数量不能太多

    节点经常变化的集群

 

bully算法: 当一个进程发现协调者(或leader)不再响应请求时,就判定其出现故障,于是他发起选举,选出新的协调者。(当前活动进程中进程号最大/小的)

  关键假设:

    系统是同步的

    进程在任何时候都可能失败,包括算法执行过程中

    进程失败后停止工作,重启后重新工作

    有失败监控者,可以发现失败进程

    进程之间传播消息是可靠的

    每一个进程知道自己和其他每一个进程的ID及地址

 

raft算法:

  容易理解;算法明确划分为选举、复制、安全三个子问题

  State machine replication:复制状态机,复制的是命令而不是数据,典型代表:Raft。
  Primary-backup system:主备复制,复制的是命令执行后的数据,典型代表:ZooKeeper 的 ZAB
 
  每一个节点都有一个状态机和一致性模块,由一致性模块保证分布式一致性,节点之间复制的是client发送的命令,无论读写请求都要进行一致性处理,因此可以容忍非拜占庭故障。
 

 

 

 

 

posted on 2022-12-20 18:49  李某人的窥视  阅读(205)  评论(0编辑  收藏  举报

导航