分散式资料库:一致性协定

基於讯息传递的一致性协定,只能保证资料的「最终一致性」,都无法处理「拜占庭将军问题(Byzantine Generals Problem)」

  • 流言(Gossip)
    从选定的种子节点开始,随机选择邻近的节点进行资料散播,接收到资料的节点重复这个步骤直至全域散播完成。
  • 共识(Consensus)
    • Paxos
      分散式一致性协定的理论基础,每次交易都需要经过 Prepare 和 Accept 及多次节点间的资料传输,有较低的资料处里量能以及交易间「活锁(Livelock)」的问题。
    • Multi-Paxos
      将 Paxos 的交易简化为一阶段,提高了系统效能,是目前丛集管理、分散式资料库主要采用的分散式协定。
    • Raft
      透过确保丛集内的任意节点的状态转换一致性以及「领袖(Leader)选举」共识演算法对 Multi-Paxos 进行了简化。
  • 分散式交易(Distributed Transactions)
    「跨系统」的交易(Transaction)所造成的资料一致性问题,没有有效的完美解决方案,多阶段提交容易很大程度的提升系统复杂度。
    • 二阶提交协定(Two Phase Commitment Protocol)
      1. 「协调者(Coordinator)」指挥所有「参与者(Participants)」***纪录交易操作(Undo、Redo)***并回覆"同意"或"终止"交易
      2. 「协调者」指挥所有「参与者」"提交(Commit)"或"回滚(Rollback)"
    • 三阶提交协定(Three Phase Commitment Protocol)
      1. 「协调者」指挥所有「参与者」回覆"同意"或"终止"交易
      2. 「协调者」指挥所有「参与者」纪录交易操作(Undo、Redo)
      3. 「协调者」指挥所有「参与者」"提交(Commit)"或"回滚(Rollback)"

<<:  Day12 - Button(二)

>>:  Day08 建造APP(2)

ESP32_DAY4 用VS Code开范例程序

经过前两天的环境准备,我们就来试着让ESP32开发板上内建的LED灯闪烁,熟悉一下如何在VS Cod...

[Day 2] 从单体式迁移至微服务架构,支援模组化开发的 Web 框架可以解决什麽问题?

近年微服务架构兴起,对於规模较小的开发团队而言,一开始就拆分为多个微服务是个沉重的负担,所以大多还是...

在 elementory OS 5.1 上轻松安装呒虾米

呒虾米输入法在 Linux 上面的安装与使用,已经方便很多,基本无痛,对於喜欢挑战的 Linux 玩...

22. 工程师之伤 x 用眼过度 x 眼药水

眼药水用完了,今天去补货。 因为我每次都记不得药的名字,药水用完都不能丢空罐很麻烦,写完这篇终於可以...

用React刻自己的投资Dashboard Day23 - 非同步呼叫API,完成首页资料串接

tags: 2021铁人赛 React 上一篇确认过API内容之後,剩下的部份就是串接API,并将资...