大型分佈式系統架構中的“let it crash”思想

原創文章,轉載請註明

        “let it crash”思想源於Erlang。Erlang的穩定性是衆所周知的。

         而Erlang的穩定,深層原因就在於“let it crash”思想。在講什麼是“let it crash”思想之前,我們先來看看其所解決的問題或背景。

         編寫大型的分佈式程序,代碼中往往會遇到這樣或那樣的異常,這些許許多多的異常很多甚至是糾纏不清的。如果嘗試去根據預想的不同異常來編寫代碼處理,是非常困難,有時候甚至是不現實的,因爲有時候你數不清有多少異常情況,在哪裏會出現,並且編寫防禦異常的代碼有可能產生新的異常。

        於是有人提出了“let it crash”思想,it一般指的是獨立的進程。其主要思想就是分佈式系統中的進程有異常,不進行防禦代碼的編寫,而是由它奔潰。然後有此進程的監督進程進行重啓,當然,奔潰前的正常狀態要做到可以恢復,也就是要做到進程狀態持久化,這個技術現在先不展開。

        核心的關鍵就是進程奔潰,監督者重啓,狀態恢復,繼續處理。在外面看來,數據處理的流程沒有中斷過。看如下示例圖:

        此圖很好地詮釋了監督者與普通進程之間的關係。當然,不是說進程中的所有異常都不處理,有些異常也是需要在進程內部處理的。具體哪些異常處理,哪些異常不處理,這個視具體情況斟酌。


發佈了32 篇原創文章 · 獲贊 82 · 訪問量 56萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章