1

CAP定理により、分散Erlangシステムが以下の3つの保証すべてを同時に提供することは不可能です。

  • 一貫性(すべてのErlangランタイムまたはノードは同時に同じデータを参照します)
  • 可用性(ノード障害は、サバイバーが動作を継続することを妨げません)
  • パーティショントレランス(任意のメッセージが失われたにもかかわらず、システムは動作し続けます)

分散Erlangシステムは、0、1 、または2つ保証をサポートできます。

ErlangとOTPを使用して、それぞれの保証をどのように実装できますか?ほとんどの分散Erlangアプリケーションは、より高いレベルのAとPを実際に選択し、「結果整合性」を確保します。Erlang自体は、分散(P)、フォールトトレラント(A)、ソフトリアルタイム、ノンストップのアプリケーションをサポートするように設計されているようです。

プログラミング言語(Erlang)、ランタイムシステム(ERTS)、およびライブラリセット(OTP)は、分散型フォールトトレラントアプリケーションを構築するために設計されています。分散フォールトトレラントアプリケーションを定義する3つのことをどのように行うのですか?

4

4 に答える 4

5

明確にするために編集

これは、アプリケーションの設計に依存し、それを実装するプラットフォームには依存しません。ほぼすべての言語またはプラットフォームの組み合わせで、2つの保証を実装できます。

于 2010-10-03T17:20:44.550 に答える
3

私が見つけた本当に良い例は、AmazonのDynamoに基づいており、ErlangとOTPを使用して構築された分散型Key-ValueストアであるRiakです。調整可能なCAPコントロールを使用すると、一貫性と可用性のレベルを動的に「選択」できます。CAPのAとPに焦点を当てることを選択します。これにより、結果整合性が得られます。Riakはオープンソースであり、その実装に関してオンラインで多くの優れた記事があります。

もう1つの良い例は、 PowerSetのDynamo-clone-in-ErlangであるDynomiteです。プロジェクトはしばらくの間死んでいますが、Dynamoクローンを構築する方法に関する有用な機能設計ドキュメントとして役立ちます。

これらの2つのプロジェクトは、それ自体がAmazonのDynamoに基づいています。これは、段階的にスケーラブルで可用性の高いKey-Valueストレージシステムです。このテクノロジーは、ユーザーが高可用性を維持しながら、コスト、一貫性、耐久性、パフォーマンスをトレードオフできるように設計されています。その論文はよく読まれている。

于 2010-10-03T18:01:22.673 に答える
0

アーランの強さはA&Pを選択することであるはずですが、他のシステムと同様に、2つ以下を選択することができます。これは、メッセージパッシングを介したすべての通信を備えたアーランプログラミングモデルに部分的に起因しています。優れたErlangスタイルを使用する場合、プロセス間の通信に共有メモリを使用しません。

于 2010-10-04T22:02:45.953 に答える
-1

この定理は1つの層でのみ考慮されるべきだと思います。レイヤーとは何ですか?これはOSI-ISOレイヤーのようなものですが、データベース用です:アプリケーション/ db、OS、ディスク/ハードウェア。1つのレイヤーですべてのCAP条件を満たすことはできません。Erlang / OTPはアプリケーション層で動作するため、そのうちの2つをErlang(Erlangの柔軟性のために選択可能)でカバーし、最後の1つをOS(つまりファイルシステム)またはハードウェア層(RAID)でカバーします。

于 2010-10-03T21:04:53.450 に答える