Spread Toolkitを見てみたいと思います。それは C ですが、C++ バインディングが存在し、独自のバインディングを作成するのも簡単です。あなたのものは、私がそれを使用して大成功を収めたいくつかのプロジェクトのように聞こえます (ただし、バインディングはありません)。
プロジェクトのウェブサイトから:
Spread は、ローカルおよびワイド エリア ネットワーク全体の障害に対して回復力のある高性能メッセージング サービスを提供するオープン ソース ツールキットです。Spread は、分散アプリケーションの統合メッセージ バスとして機能し、高度に調整されたアプリケーション レベルのマルチキャスト、グループ通信、およびポイント ツー ポイント サポートを提供します。Spread サービスは、信頼性の高いメッセージングから、配信保証付きの完全に順序付けされたメッセージまでさまざまです。
Spread は、メンバーのさまざまなサブセット間で高い信頼性、高性能、および堅牢な通信を必要とする多くの分散アプリケーションで使用できます。このツールキットは、非同期ネットワークの困難な側面をカプセル化し、信頼性が高くスケーラブルな分散アプリケーションの構築を可能にするように設計されています。
Spread は、ユーザー アプリケーションがリンクされるライブラリ、プロセッサ グループの一部である各コンピュータで実行されるバイナリ デーモン、およびさまざまなユーティリティおよびデモ プログラムで構成されます。
Spreadが提供するサービスと利点の一部:
- 信頼性と拡張性に優れたメッセージングとグループ通信。
- 非常に強力でシンプルな API により、分散アーキテクチャの構築が簡素化されます。
- 使用、展開、および保守が簡単です。
- 1 つのローカル エリア ネットワークから複雑なワイド エリア ネットワークまで、高度にスケーラブルです。
- メンバーのセットが異なる何千ものグループをサポートします。
- マシンの障害、プロセスのクラッシュと回復、およびネットワークのパーティションとマージが発生した場合でも、メッセージの信頼性を有効にします。
- メッセージの信頼性、順序付け、および安定性の保証の範囲を提供します。
- 堅牢性と高性能を重視。
- 中央障害点のない完全に分散されたアルゴリズム。
これらすべてに基づいて、複雑なものに違いなく、小さなプロジェクトにとってはおそらくやり過ぎのように聞こえることは承知していますが、実際にはそうではありません。基本的な使用法は本当に単純です。ツールキットが解決する問題は本質的に非常に難しいため、確かに内部は複雑です。しかし、TCP を広く使用しているにもかかわらず、TCP が実際にどのように機能するかを確認したことがないように、少なくともそこを見る必要はありませんでした。
(いいえ、私はこのプロジェクトのために働いているわけではありません。ただの幸せなユーザーです。)