根据CAP 定理,分布式 Erlang 系统不可能同时提供以下所有三个保证:
- 一致性(所有 Erlang 运行时或节点,同时看到相同的数据)
- 可用性(节点故障不会阻止幸存者继续运行)
- 分区容限(尽管有任意消息丢失,系统仍继续运行)
一个分布式 Erlang 系统可以支持零个、一个或两个保证。
使用 Erlang 和 OTP,如何实现每个保证?大多数分布式 Erlang 应用程序为更高级别的 A 和 P 做出了实际的选择,并满足于“最终一致性”。似乎 Erlang 本身旨在支持分布式 (P)、容错 (A)、软实时、不间断的应用程序。
编程语言 (Erlang)、运行时系统 (ERTS) 和库集 (OTP) 旨在构建分布式容错应用程序;我该如何做定义分布式容错应用程序的三件事?