天天看點

Paxos 誕生的曲折曆史

學習之餘跟大家分享一些趣事,也是我剛剛吃到的瓜。因為我們有一門課叫分布式,老師布置了幾個課題,讓我們寫相關的作業。然後恰好我就選擇了Paxos算法。然後我發現他這段誕生曆史實在是太有趣了,馬上把它講出來,跟大家分享一下。 

Paxos理論一波三折的誕生過程,後來也成為了計算機科學領域被廣泛流傳的學術趣事。 

在1990年,Lamport提出了一個理論上的一緻性解決方案。因為之前“拜占廷将軍問題”,使用生動的故事取得了良好的反響,是以這次Lamport 同樣設想出了一個場景來描述這種一緻性算法需要解決的問題:

Paxos 誕生的曲折曆史

在這個論文中,Lamport 壓根沒有說Paxos 小島是虛構出來的,而是煞有介事的說是考古工作者發現了Paxos議會事務的手稿,從這些手稿猜測 Paxos 人開展議會的方法。是以,在這個論文中,Lamport 從問題的提出到算法的推演論證,通篇貫穿了對Paxos議會曆史的描述。

Lamport在1990年寫完論文The Part-Time Parliament,就直接将其投給了ACM Transactions on Computer Systems(TOCS)。

但是由于 Lamport使用的講故事的方法描述其算法,導緻當時委員會的從業人員并沒看懂他要表述什麼,那時的編輯Ken Birman建議 Lamport使用嚴謹的數學方式來描述該算法。

Paxos 誕生的曲折曆史

但是Lamport 作為一個很有個性的大佬,拒絕了這個提議。并且在後來的回憶錄中Lamport還吐槽這群人沒有幽默感。

Paxos 誕生的曲折曆史
Paxos 誕生的曲折曆史
Paxos 誕生的曲折曆史

不止是投稿,Lamport還将論文發給其業界大佬閱讀,比如Nancy Lynch、Vassos Hadzilacos、Phil Bernstein等人。這些人聲稱已經讀完論文。但是大概兩個月後,Lamport給他們發了封郵件,詢問他們“是否能夠實作一個可以容忍任意數目的程序出錯且能保持一緻性的分布式資料庫,同時當半數以上程序恢複正常時該系統也能夠恢複正常?”不幸的是這些人都沒意識到這個問題和之前Lamport發給他們的論文有什麼關聯。

Paxos 誕生的曲折曆史

直到1996年,另一位圖靈獎獲得者Butler Lampson看到了這篇論文,并在*How to Build a Highly Availability System Using Consensus*中對其進行描述。Butler Lampson在WDAG96上提出了重新審視這篇分布式論文的建議,在次年的WDAG97上,麻省理工學院的Nancy Lynch也公布了其根據Lamport的原文重新修改後的*Revisiting the Paxos Algorithm*,“幫助”Lamport用數學的形式化術語定義并證明了Paxos算法。

這個時候Lamport想是時候重新發表這篇論文了!但是他還是不想改,于是找了Keith Marzullo做注釋,聲稱這是從某處翻出來的舊手稿。Ken Birman也同意了,于是Lamport這篇論文就成了Keith Marzullo做注的“手稿”。

Paxos 誕生的曲折曆史

Keith Marzullo的注釋:

本文最近剛被從一個檔案櫃裡發現,盡管這篇論文是很久之前送出的但是主編認為還是值得發表的。但是由于作者目前在希臘小島上考古,ACM TOCS聯系不上這位考古學家,是以任命我來發表這篇論文。作者貌似是個對計算機科學稍微有點興趣的考古學家,盡管他描述的Paxos島上民主制度的故事對計算機科學家而言沒啥興趣,但是這套制度對于在異步網絡中實作分布式系統時是很好的模型。建議閱讀的時候直接看第四節,或者最好先别看,最好先去看看Lampson或者De Prisco對這篇論文的解釋。