我喜欢LWN的文章"Crash-only software",我想了解更多关于崩溃安全和容错编程的知识。
令人惊讶的是,很难确保持久状态在故障情况下是一致的。在这里,我甚至不讨论分布式操作:这在单个节点上也很困难:如果系统崩溃,即使是普通的Berkeley DB (BDB Data Store或BDB Concurrent Data Store)也可能有一个被破坏的数据库。不仅高级应用程序约束被破坏,而且如果系统崩溃,数据库可能无法正确打开。
关于崩溃安全和容错设计、方法和编程,有哪些好的资源。
如果资源集中在C++和POSIX环境上,我将不胜感激。
发布于 2010-07-24 06:07:51
Akka是Java和Scala的一个框架,它在编写时就考虑到了让它崩溃。有关参与者和让它崩溃的介绍,请参阅此article和this演示文稿。它也称为Fail-Fast和worker/supervisor样式。
关于erlang的两个很好的演示是Systems that Never Stop (and Erlang)和Message Passing Concurrency in Erlang
Theron是C++的一个演员库,我也认为Boost中也有一些东西。
此外,Erlang还可以调用C或C++ code,请参阅本文进行讨论。Java / Scala / Akka也可以调用C++代码。
(如果你喜欢Scala,我建议你去看看C++,这是一种非常好的语言,如果你来自C++,它比Java更好。)
另外,Jonas Boners presentation Scalability, Availability & Stability Patterns是关于这个主题的一个很好的演示。
发布于 2010-07-24 06:04:21
Erlang和Scala语言中的Aktor模型让它崩溃模型。请参阅此article。
发布于 2012-02-04 22:30:06
除了上面的答案之外,还有Groovy和GPars,它们都被遗漏了。当然,这不是C++。
在C++中还有另一个名为libcppa的实验库。Theron比这更成熟。
无论如何,您最好的选择是使用以下两种方法之一:
https://stackoverflow.com/questions/2405172
复制相似问题