容错分布式一致性算法——totem(一)

Totem协议是一种基于令牌环的分布式一致性算法,适用于小规模局域网集群。该协议确保消息的有序传递和强一致性,但在网络分区时可能导致脑裂。本文介绍了Totem的四个阶段(Gather、Commit、Recovery、Operational)及其工作原理,强调了在Operational状态下如何实现消息的有序分发和异常检测。

  第一次接触分布式一致性算法是通过totem,现在开始研究paxos和raft之类,后面也是会做笔记的,便先将totem算法先写下来,用于对比学习。
  totem协议,全称是The Totem Single-Ring Ordering and Membership Protocol,是一个基于令牌环的分布式一致性算法。一个令牌在集群节点之间传递,拿到令牌的节点才能够发消息,消息通过UDP广播发送。所以,totem只适合在局域网里的小集群使用,这种情况下,这个算法性能还算高的。从CAP来说,totem具有强一致性,但几乎没有分区容错性,在网络出现分区时,totem会脑裂,当网络恢复时,会造成消息丢失。所以我们集群的做法是网络有问题时禁止节点发送消息。
  现在来具体介绍这个协议,首先我们明确totem实现了什么:在多个节点组成的集群中,totem实现让一个节点发送消息,其它所有节点都能全部收到,并且有序的提交给上层应用,这里的环境和paxos一样是除拜占庭问题外的环境。为了方便表述,且totem使用令牌环,这里将一个集群也称作一个ring。下面是一张集群的状态图,每个节点都会经历以下状态。
totem状态机
  totem的节点有四个状态,也是组建集群的4个阶段。
Gather阶段:
  这个阶段用于每个节点向外界广播自己的存在并收集其它节点的存在
Commit阶段:
  这个阶段会产生一个代表节点,该节点向其它所有节点收集信息,并将收集的信息传递给其它所有节点,用于后续阶段
Recovery阶段:
  这个阶段用于新旧集群交替时,旧集群成员用新集群传递旧集群的消息,使旧集群成员达到所有节点消息全部有序提交到上层
Operational阶段:
  这个阶段是集群组建完成正常工作的状态,这个状态一个节点发送的消息其它节点都会全部有序提交给上层

  totem协议可以概括为三个部分,集群正常运行时候的THE TOTAL ORDERING PROTOCOL,operat

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值