通过CAP theorem,这是不可能的distributed Erlang system同时提供所有三个以下保证的:分布式Erlang和在CAP定理
- 一致性(所有的Erlang运行时间,或节点,请参见在同一数据同一时间)
- 可用性(节点故障不会妨碍幸存者持续经营)
- 分区容忍性(系统继续,尽管任意消息亏本经营)
分布式Erlang系统可以支持零,一个或两个的保证。
使用Erlang和OTP,每个保证如何实现?大多数分布式Erlang应用程序为A级和P级的更高级别做出了实际选择,并解决了“最终一致性”问题。看来Erlang本身被设计为支持分布式(P),容错(A),软实时,不间断的应用程序。
编程语言(Erlang),运行时系统(ERTS)和一组库(OTP)用于构建分布式容错应用程序;我该如何做定义的分布式容错应用程序的三件事?
您更新的问题,就像是说:“我有一把锤子,我怎么能盖房子,学校或寄宿学校?”你将得到的最佳答案将解释CAP理论,但是实施细节很难给出一套简单的指令。 – mikerobi 2010-10-03 18:28:50
我明白了你的意思,但我认为它更像是说:“我有一种编程语言,运行时系统和许多用于构建分布式容错应用程序的库(Erlang/OTP)。 _define_分布式容错应用程序?“ – Rudiger 2010-10-04 16:37:55
我没有在Erlang中看到这个一致性项目符号。只是提到由于网络延迟造成的mnesia及其问题。很多时候,我看到一个cluseter建立在随机状态的FSM上。分区T. - 同样的。尝试合并状态或mnesia(拆分表),它通常是通过选择主节点并在加入节点后转储另一半来完成的。矢量时钟很容易实现。我最近做了它,但在测试中,他们在合并之前爆炸了真实数据。 – user425720 2010-10-04 20:07:45