EN
返回档案库

案例库 · 软件与 IT · 技术决策 · 1986–2003

爱立信的Erlang交换机软件实现九个九的可靠性,秘诀是让进程崩溃

AXD301在轻量级进程上处理数百万个呼叫,这些进程可以崩溃并重启,达到了99.9999999%的可用性,同时开发者生产力提升了4倍。

爱立信

那一手

电信设备必须连续运行多年,即使升级期间也不能停止。1986年,乔·阿姆斯特朗和爱立信的同事开始为这样的世界构建一门语言:Erlang,它采用轻量级进程、消息传递和热代码替换,而不是共享内存和线程。

最典型的证明是AXD301 ATM交换机,于1998年发布。它在双冗余硬件上运行分布式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成为公司最成功的新产品之一,该论文将其记录为爱立信有史以来最可靠的产品之一。

资料来源

发现哪里写错了?告诉我们。

同一路聪明