15

我喜欢 LWN 文章“仅崩溃软件”,我想了解更多关于崩溃安全和容错编程的知识。

很难确保持久状态在故障情况下是一致的。在这里我什至不讨论分布式操作:这在单个节点上也很困难:如果系统崩溃,即使是普通的 Berkeley DB(BDB 数据存储或 BDB 并发数据存储)也可能会损坏数据库。不仅高级应用程序约束被破坏,如果系统崩溃,数据库可能无法正确打开。

有哪些关于崩溃安全和容错设计、方法和编程的好资源。

如果资源专注于 C++ 和 POSIX 环境,我将不胜感激。

4

4 回答 4

6

Akka 是一个 Java 和 Scala 框架,在编写时考虑了 let-it-crash。有关 Actors 和 let-it-crash 的介绍,请参阅本文演示文稿。它也被称为快速失败工人/主管风格。

关于 erlang 的两个很好的演示文稿是永不停止的系统(和 Erlang)和Erlang中的消息传递并发

Theron是 C++ 的演员库,我也认为 Boost 中也有一些东西。

Erlang 也可以调用 C 或 C++代码,请参阅此讨论。Java / Scala / Akka 也可以调用 C++ 代码。

(如果你喜欢 C++,我建议你看看 Scala,非常好的语言,如果你来自 C++,它比 Java 更好。)

Jonas Boners 的演讲Scalability, Availability & Stability Patterns也是关于这个主题的一个很好的演讲。

于 2010-07-23T22:07:50.670 回答
1

Erlang 和 Scala 语言中的 Aktor 模型是让它崩溃的模型。见这篇文章

于 2010-07-23T22:04:20.613 回答
0

要添加到上述答案集中,还有GroovyGPars,它们被遗漏了。当然,这不是 C++。

C++ 中有另一个名为libcppa的实验库。塞隆比这更成熟。

任何方式你最好的选择是使用:

  1. 二郎
  2. 斯卡拉/阿卡
于 2012-02-04T14:30:05.977 回答
0

如果你想在 C++ 中实现容错特性,基本上你会重写 Erlang。不要重新发明轮子,Erlang OTP 已经存在并且经过了 35 年以上的实战考验。用它!。

于 2021-02-22T01:42:14.727 回答