深入淺出 Paxos 算法

本文深入浅出地介绍了 Paxos 算法,旨在帮助读者理解这一复杂的分布式一致性算法。文章详细阐述了 Paxos 的问题背景、三种角色(Proposer、Acceptor、Learner)以及算法的整体流程,通过逐步推导揭示了如何在多个 Proposer 和 Acceptor 中达成一致。最后,文章强调了学习和实践 Paxos 算法的重要性。
摘要由CSDN通过智能技术生成

前言

對於 paxos 算法,真的必須承認,是一個比較複雜且難懂的算法,所以其實寫這篇也是希望能夠通過這樣的方式,強迫自己多看些資料,逼自己看看能不能夠稍微理解下 paxos 的全貌。
paxos 算法在分布式領域有著非常重要的地位,但是,眾所皆知非常難懂,且在現實工程中更加難以實現。這篇就來看看 paxos 工作的原理和工作機制。

正文

什麼是 Paxos ?

Paxos 是一個基於消息傳遞,且具有高度容錯特性的一致性算法,應用於分布式領域的一致性問題。

問題背景

在分布式系統中,常見的問題像是機器當機或是網路延遲等問題都是有可能發生的。而 Paxos 算法就是希望能解決在問題發生的分布式系統中,能夠盡快在集群內部就一個值達成一致。

這裡說的值(value),不限於某個數。像是一條日誌,一條命令等等,在不同分布式場景下,值可以是不同的含意。

Paxos 三種角色

在 paxos 算法中,有三種角色:

  1. Proposer
  2. Acceptor
  3. Learner

在一個集群中,任何機器上的進程都可以同時充當多個角色。

這邊引進一個新的概念,提案(propose)。最終要達成一致的 value 就在 propose 中。

:

  1. 暫且認為 提案 = value,即提案只包含 value。
  2. 暫且認為 proposer 可以直接提出提案。

Proposer 可以 propose 一個提案,而 Accepter 可以選擇接受或者拒絕一個提案,一旦某個提案被接受(chosen),該提案中的 value 就會被選中。

在前面提到,paxos 希望做到的就是對於某個 value 達成一致。所謂一致就是指 proposer, accepter, learner 都認為同一個 value 被 chosen。那麼就來看看,三種角色分別在怎樣的情況下可以認為一個 value 被 chosen。

  • Proposer
    只要 propser 提出的提案被 acceptor 接受,就可以認為該提案中的那個 value 被 chosen。(下一節開始會先假設只要一個 acceptor 接受就可以,可是稍後就會發現要一半以上的 acceptor 接受)

  • Acceptor
    只要 acceptor 接受了某個提案,就可以認為該提案中的那個 value 被 chosen。

  • Learner
    由 acceptor 告訴 learner 哪個 value 被 chosen,learner 就認為該 value 被 chosen。

在進入 paxos 算法的推導前,再提醒下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值