關於構建可進化的系統

2021-09-17 05:47:50 字數 1214 閱讀 3799

在最近一篇帖子上,mike amundsen寫了構建可進化的系統,對他的演講「超越rest:乙個打造穩定、可進化的web應用程式的方案」做了補充。在那場演講裡,他希望回答的問題是「我們如何設計和實現分布式網路解決方案,使之隨著時間的推移仍然保持穩定和靈活?」他說:

\

……把乙個「應用」放到可以觸及的「web上」一點都不難,難就難在實現乙個解決方案,隨著時間的推移能夠成功地進化。我認為乙個成功的方案包括接受和採納分布式網路架構的一些現實,隔離環境裡的臨時因素,以及把你的大部分創造力放在以一種靈活和可進化的方式來表達重要的問題域資訊上。
\

根據mike的說法,回答這個問題的關鍵在於著眼於系統的三個方面:

\ * 傳輸協議——他認為目前建立分布式系統的工具都在向開發者隱藏了底層的協議,為了提高抽象性,通常犧牲了傳輸協議與生俱來的優點。

\

處理http的最好方式是接納它,讓http把系統設計師引向有損耗的(lossy)、零散的(chunky)和無狀態的設計,接受http的穩定性對於你的實現來說很少改變這個本性……這樣你的所有分布式網路設計都會體現http本身的強大、穩定和可靠。
\

* 狀態管理——作為識別和接納協議的不同方面的乙個特例,狀態管理通常用在本來沒有狀態的協議上(在這裡是http)維護有狀態的通訊。

\

與其

不斷地發明新的方式,企圖忽視分布式網路互動中的無狀態本性,設計師和開發者應該停止使用他們的臨時個性化資料汙染公共網路,客戶端應該記錄使用者所需的資訊(這正是為什麼它們通常被稱作

使用者**)。

\

* 領域語義——他接著解釋如何使用**型別在客戶端和伺服器之間共享領域語義。

\

正是**型別為各方定製訊息提供了可能;共享它們對每個資料元素和超連結的含義的理解。正是**型別專門提供了

登錄檔,各方都可以在這裡找到共享出來的對問題域的理解,以便在相互認可的領域層面實現解決方案。

\

最後,他總結道

\

構建可進化的系統並不是非常複雜。它需要清除地理解傳輸協議,小心地隔離臨時資料,並專注於通過共享訊息恰當地表達問題域。這未必是乙個複雜的過程,但確實需要付出努力。
\

你能舉出企業或者其他地方的例子,同時具備所有這些方面的嗎? 

\檢視英文原文:on building evolvable systems

基於遺傳距離的方法構建系統進化樹

一 基於snps和indels估計遺傳距離 plink file distance matrix recode out distance.out 生成兩個檔案 二 接下來基於遺傳距離矩陣構建系統進化樹軟體使用 lustre softs phylip neighbor 鄰接法 輸入mdist檔案,生成...

關於《物理學的進化》

2019.7.29 2019.8.2閱讀的中信出版社新版的 物理學的進化 評級 地階 相比科普 物理學史或是科技哲學,這本書更像是愛因斯坦開源了其發明 相對論 和 質能方程 以及在晚年執著於尋找 統一場論 的整個思維過程。這麼說雖然只是我的個人感覺,沒什麼根據,但開篇將 偵探 和 物理學發現 進行對...

構建可靠的系統

區分可靠和不可靠的操作,是編寫可靠 的基本要求。只有理解了什麼是可靠與不可靠才能做出正確的應對,使可靠的 簡潔,不可靠的 健壯,例如從快取中獲取資料,更新資料庫,這些就是不可靠的操作,可能因為網路,軟體,硬體等各種原因失敗,需要根據不同的情況記錄異常或者進行重試等操作,因為更新資料庫可能失敗,需要在...