電信設備必須連續運作數年而不停機,即使在升級期間也是如此。1986 年,Joe Armstrong 與愛立信的同僚開始為這樣的世界打造一門語言:Erlang,採用輕量級程序、訊息傳遞與熱程式碼替換,而非共享記憶體與執行緒。

最具代表性的證明是 1998 年發表的 AXD301 ATM 交換機。它在重複配置的硬體上執行分散式 Erlang,可從 10 Gbit/s 擴展到 160 Gbit/s,並設計成能在不中斷流量的情況下更換硬體與軟體。截至 2001 年,它包含 2,248 個模組、共 113 萬行 Erlang 程式碼,並達到實測的九個九可靠性,即 99.9999999%。

Erlang 的「讓它崩潰」哲學——由監督樹重新啟動失敗的程序——同時也是生產力的勝利:HOPL 歷史記載該專案的開發者生產力提升了四倍。AXD301 推出的同一年,Erlang 被禁止用於愛立信的新產品;1998 年 12 月,它改以開源形式發布。

讓小型程序崩潰;由監督者重新啟動它們

程序隔離可防止單一故障拖垮整個系統

監督者自動重新啟動失敗的程序,無需人工介入

熱程式碼升級消除了停機這項部署限制

小型程序模型能以低成本支援數千通並行通話

對於絕不能停機的系統,應反轉錯誤策略:預期故障會發生,將其隔離在小型程序中,並讓復原自動化,使系統的設計目標是存活,而非完美。

1998 年 Erlang 開源後,其影響力遠播愛立信之外:同樣的模型如今支撐著 RabbitMQ、Meta 的 WhatsApp,以及 Elixir/Discord 系統。在愛立信內部,AXD301 成為公司最成功的新產品之一,而該論文也將其記載為愛立信有史以來最可靠的產品之一。

追溯依據

參考來源

  1. Making Reliable Distributed Systems in the Presence of Software Errors (PhD thesis) Royal Institute of Technology, via erlang.org · erlang.org
  2. A History of Erlang (HOPL III) ACM SIGPLAN, mirror at labouseur.com · labouseur.com
  3. A (Very) Brief History of Erlang Vonage Developer Blog · developer.vonage.com ·