4

私はAkkaの初心者です。しかし、私は数年間 Web プロジェクトで働いています。以前は、「ngix+ tomcat クラスター」プランを使用していましたが、Tomcat サーバーの 1 つがクラッシュ (物理的にマシンがクラッシュ) すると、Tomcat クラスターの他のメンバーが、障害が発生したサーバー宛てのリクエストを引き継ぎます。そして、これにより高可用性を実現します。新しい Web プロジェクトでは、耐障害性とスケーラビリティを実現するために akka を使用する予定です。マスター アクターとなる 1 つのサーバーを次に示します。このサーバーのジョブは、外部からの要求メッセージを子アクターにディスパッチすることです。子アクターは、ローカルまたはリモートで配布できます。子アクターのいずれかが失敗すると、マスター アクターがそれを修正します。私の質問は、マスター アクターが失敗した場合 (おそらくマシンがクラッシュした場合)、この場合に高可用性を実現するにはどうすればよいですか? マシンがクラッシュした場合、マスター アクターが存在する場所では、マシンを手動で再起動する必要があります。また、この期間中は、サービスをしばらく停止する必要があります。それは私たちにとって容認できません。この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

外部ロードバランサーを使用することをお勧めします。たとえば、Akka クラスター ノードのすべてのアドレスを Web アプリの中間層に報告し (そして、それらをしばらくの間そこにキャッシュする)、中間層から Akka バックエンドへの要求を負荷分散することができます (たとえば、ランダムなクラスター ノードを選択します)。毎回)。

Akka バックエンドが子アクターのリソース取得の何らかの単一ポイントを必要とする場合、クラスター シングルトンをマスター アクターとして使用することができます。この場合、すべてのクラスタ ノードがクライアント リクエストをクラスタ シングルトンおよびクラスタ シングルトンに送信し、特定の方法ですべてのクラスタ ノード間でタスクを分散できます。

于 2013-11-05T13:38:23.123 に答える