有关崩溃安全和容错编程的资源

dme*_*ter 15 c++ crash posix fault-tolerance

我喜欢LWN文章"Crash-only software",我想了解更多关于崩溃安全和容错编程的知识.

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

什么是关于崩溃安全和容错设计,方法和编程的良好资源.

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

olu*_*ies 6

Akka是Java和Scala的框架,它是用let-it-crash编写的.有关Actors和let-it-crash的介绍,请参阅本文演示文稿.它也被称为Fail-Fastworker/supervisor风格.

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

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

Erlang也可以调用C或C++ 代码来讨论这个问题.Java/Scala/Akka也可以调用C++代码.

(如果您喜欢C++,我建议您查看Scala,非常好的语言,如果您来自C++,则比Java更好.)

此外,Jonas Boners演示文稿可伸缩性,可用性和稳定性模式是关于该主题的一个很好的演示.

  • 如果让Java(或Scala)使用JNI调用C++ DLL,那么JVM的稳定性就会受到威胁.由于C++代码在与JVM相同的进程中运行,因此如果C++代码崩溃,JVM将会死亡.JNI不能很好地工作,不要使用它. (3认同)

TTM*_*MAN 1

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