極客時間 左耳聽風 程式設計師攻略 分布式架構入門

2022-01-23 23:03:48 字數 1511 閱讀 1655

分布式系統涵蓋的面非常廣,具體來說涵蓋如下幾方面:

所有這些形成了分布式架構的整體複雜度,也造就了分布式系統中的很多很多**、圖書以及很多很多的專案。

注意幾點。

github 上的一篇文件 - system design primer ,這個倉庫主要組織收集分布式系統的一些與擴充套件性相關的資源,它可以幫助你學習如何構建可擴充套件的架構。

目前這個倉庫收集到了好些系統架構和設計的基本方法。其中包括:cap 理論、一致性模型、可用性模式、dns、cdn、負載均衡、反向**、應用層的微服務和服務發現、關係型資料庫和 nosql、快取、非同步通訊、安全等。

an introduction to distributed systems。 某個教學課程的提綱,幾乎涵蓋了分布式系統方面的所有知識點,而且輔以簡潔並切中要害的說明文字。

拜占庭將軍問題(byzantine generals problem)。這個問題是萊斯利·蘭波特(leslie lamport)於 1982 年提出用來解釋一致性問題的乙個虛構模型(**位址)。拜占庭是古代東羅馬帝國的首都,由於地域寬廣,守衛邊境的多個將軍(系統中的多個節點)需要通過信使來傳遞訊息,達成某些一致的決定。但由於將軍中可能存在叛徒(系統中節點出錯),這些叛徒將努力向不同的將軍傳送不同的訊息,試圖會干擾一致性的達成。拜占庭問題即為在此情況下,如何讓忠誠的將軍們能達成行動的一致。

對於拜占庭問題來說,假如節點總數為n,叛變將軍數為f,則當n >= 3f + 1時,問題才有解,即拜占庭容錯(byzantine fault tolerant,bft)演算法。拜占庭容錯演算法解決的是,網路通訊可靠但節點可能故障情況下一致性該如何達成的問題。

最早由卡斯楚(castro)和利斯科夫(liskov)在 1999 年提出的實用拜占庭容錯(practical byzantine fault tolerant,pbft)演算法,是第乙個得到廣泛應用的 bft 演算法。只要系統中有 2/3 的節點是正常工作的,則可以保證一致性。pbft 演算法包括三個階段來達成共識:預準備(pre-prepare)、準備(prepare)和提交(commit)。

拜占庭容錯系統研究中有三個重要理論:cap、flp 和 dls。

乙個著名的「8 條荒謬的分布式假設(fallacies of distributed computing)」。

網路是穩定的。

網路傳輸的延遲是零。

網路的頻寬是無窮大。

網路是安全的。

網路的拓撲不會改變。

只有乙個系統管理員。

傳輸資料的成本為零。

整個網路是同構的。

fallacies of distributed computing explained 解釋為什麼這些觀點是錯誤的。

加勒思·威爾遜(gareth wilson)的文章 則用日常生活中的例子,對這些點做了通俗的解釋。為什麼我們深刻地認識到這 8 個錯誤?是因為,這要我們清楚地認識到——在分布式系統中錯誤是不可能避免的,我們在分布式系統中,能做的不是避免錯誤,而是要把錯誤的處理當成功能寫在**中。

幾篇一致性方面的**。

極客時間 左耳聽風 程式設計師攻略 機器學習和人工智慧

機器學習的基本原理。機器學習主要有兩種方式,一種是監督式學習 supervised learning 另一種是非監督式學習 unsupervised learning 下面簡單地說一下這兩者的不同。監督式學習是在被告訴過了正確的答案後的學習,而非監督式學習是在沒有被告訴正確答案時的學習。所以,非監督...

極客時間01 左耳聽風

程式設計師用手藝 技術養活自己,不依靠公司 提高工作效率,去研究那些難的,公司內外的核心技術 注重輸出,輸出技術 價值觀,幫助更多的人,提高影響力。如何做?積少成多,形成正向迴圈 關注有價值的東西,關注市場市場需求和技術趨勢 在學習技術的過程一定要多問自己兩個問題 一,這個技術解決什麼問題?為什麼別...

極客時間 左耳聽風閱讀筆記

經典系列,推薦!歡迎掃瞄學習!1.程式設計師如何用技術變現 上 本文主要講述了作者開始接觸程式到現在的一些經歷。從最開始在學校幫老師做東西,到後來公司請他做培訓。他通過知識幫別人解決問題,來賺取報酬。乙個人能不能技術變現,主要在於你能不能幫別人解決問題。尤其是你能幫別人解決別人解決不了的問題,這個時...