15

LWN の記事「Crash-only software」が好きで、クラッシュセーフでフォールト トレラントなプログラミングについてもっと学びたいと思っています。

永続的な状態が障害状況で一貫していることを保証することは驚くほど困難です。ここでは、分散操作については触れません。これは、単一のノードでも難しいことです。通常の Berkeley DB (BDB データ ストアまたは BDB コンカレント データ ストア) でさえ、システムがクラッシュすると、データベースが破壊される可能性があります。高レベルのアプリケーションの制約が破られるだけでなく、システムがクラッシュした場合、データベースが正しく開かれない可能性があります。

クラッシュセーフでフォールト トレラントな設計、アプローチ、およびプログラミングに関する優れたリソースは何ですか。

リソースが C++ および POSIX 環境に焦点を当てている場合は、それを歓迎します。

4

4 に答える 4

6

Akka は、let-it-crash を念頭に置いて作成された Java および Scala 用のフレームワークです。アクターと let-it-crash の概要については、この記事このプレゼンテーションを参照してください。Fail-Fastワーカー/スーパーバイザースタイルとも呼ばれます。

erlang に関する 2 つの優れたプレゼンテーションは、Systems that Never Stop (および Erlang)Message Passing Concurrency in Erlang です。

Theronは C++ のアクター ライブラリですが、Boost にも何かあると思います。

また、Erlang は C または C++コードを呼び出すことができます。議論については、こちらを参照してください。Java / Scala / Akka は C++ コードも呼び出すことができます。

(C++ が好きなら、C++ 出身の場合は Java よりも優れた非常に優れた言語である Scala を参照することをお勧めします。)

また、Jonas Boners のプレゼンテーションScalability, Availability & Stability Patternsは、このトピックに関する優れたプレゼンテーションです。

于 2010-07-23T22:07:50.670 に答える
1

Erlang および Scala 言語の Aktor モデルは、モデルをクラッシュさせます。この記事を参照してください。

于 2010-07-23T22:04:20.613 に答える
0

C++でフォールトトレランス機能を実装したい場合、基本的にはErlangを書き直します。車輪を再発明する必要はありません。Erlang OTP があり、35 年以上にわたってテストされています。これを使って!。

于 2021-02-22T01:42:14.727 に答える
0

上記の一連の回答に追加するために、GroovyGParsがありますが、これは見逃されています。もちろん、これは C++ ではありません。

libcppaと呼ばれる C++ の別の実験的ライブラリがあります。セロンはこれよりも成熟しています。

いずれにせよ、最善の策は次のいずれかを使用することです。

  1. アーラン
  2. スカラ / アッカ
于 2012-02-04T14:30:05.977 に答える