未來的併發和分布式程式設計

2021-09-23 11:35:03 字數 1210 閱讀 5063

世界是併發的,我們周圍的一切都是非同步和事件驅動的。在最近召開的倫敦qcon大會上,joe duffy在他的主題演講裡宣稱,未來每乙個開發者都需要同併發和雲打交道。其中的核心在於通訊,它對於併發和分布式系統都至關重要。

duffy曾任微軟的語言和編譯器工程總監,他認為分布式的就是併發的;本質上就是很多件事在同一時間一起發生。唯一的區別在於,在分布式系統中,事情發生時,彼此相距較遠,比如在不同的處理器、伺服器或者資料中心。這個差異很重要,尤其對於通訊來說。使用記憶體共享還是採用把時延控制在毫秒級的網路通訊會帶來不同的約束和能力,也會影響系統架構。

併發程式設計和分布式程式設計在早期的電腦科學中有著相同的根源。在早期,問題總是由非同步帶來的。duffy認為,butler lampson在構建分布式系統方面是最偉大的思想家之一,尤其在可靠性方面,他也強烈推薦了lampson的**,即2023年發表的「系統設計」。duffy宣稱,在2023年之後多核cpu開始出現至今,在併發程式設計領域我們沒有發明任何東西。相反,我們回過頭去找早期的想法和發表的**。

在未來,duffy期望看到分布式程式設計的回歸,有越來越多設計良好的分布式系統使得系統看起來更像經典的併發系統。我們已經學了不少關於構建併發系統的東西,他則強調了七條關鍵經驗:

先思考通訊。它必須是任何分布式應用架構的一部分。ad-hoc通訊會帶來可靠性的問題。而actor模式和佇列則是好的範例。 概要設計很有用,但是不要盲目相信它。伺服器總是以跟客戶端不同的速度發生變化,duffy以internet為例說明了即便如此也可以工作的很好。 安全很重要,但是很難做到。安全性的缺乏可能會導致資源競爭、死鎖或者未定義行為的出現。duffy認為,更好的安全形式是做好隔離。如果無法做到,你需要做到不可改變。如果這也做不到,你需要採用標準同步機制。 在設計時為失敗做好準備,因為總會有錯誤發生的。duffy認為,我們的設計應該考慮可複製和重啟能力,還說明了,故障恢復對於乙個可靠的併發系統來說是必需的。 結構應該反映因果關係。一連串的事件引發的某個行為在併發系統裡可能是非常複雜的。有相關上下文可以簡化對這些事件和行為的跟蹤。 編碼結構採用併發模式,以使其更容易理解系統。duffy的兩個最喜歡的模式是fork-join和pipeline。 少說,多用宣告和反應式程式設計。宣告和反應模式善於把難題交給編譯器和框架來處理。他認為serverless是這個想法在只有乙個事件和乙個動作時的特殊例項。

duffy在最後總結強調了,未來是分布式的,他期望在分布式程式設計方面見到更多有啟發的先鋒。我們當下的程式語言對於併發支援的很好,他期望程式語言能漸漸對於分布式和雲程式設計也支援的更好,最好能把他提到的七點內建進去。

未來的併發和分布式程式設計

世界是併發的,我們周圍的一切都是非同步和事件驅動的。在最近召開的倫敦qcon大會上,joe duffy在他的主題演講裡宣稱,未來每乙個開發者都需要同併發和雲打交道。其中的核心在於通訊,它對於併發和分布式系統都至關重要。duffy曾任微軟的語言和編譯器工程總監,他認為分布式的就是併發的 本質上就是很多...

分布式的現在和未來

分布式是個很大的概念和領域,它涉及到眾多相關的知識,比如分布式鎖,分布式事務,訊息機制,資料庫分片,複製,容災,分布式檔案系統等等。那麼它為什麼值得我們研究呢?以及未來還會有哪些發展趨勢,和其他領域的知識有 是相通的呢?這篇文章將給你介紹一下。說起分布式,大家可能最熟悉不過的就是2pc和3pc了,2...

分布式事務和事務併發控制

近期阿里開源了fescar分布式事務中介軟體,值得期待.分布式事務是指乙個事務會涉及到到多個應用介面呼叫,底層資料表涉及到多個,但資料庫可以是乙個或多個,它是傳統單資料庫事務在廣度上的延伸.事務併發控制,在oltp關係型資料庫中,事務併發控制往往是指事務的隔離性,在本文中,指的是應用層的併發事務控制...