2017-02-27 7 views
4

私のアプリケーション用にMicroservicesアーキテクチャを適用します。マイクロサービス間の内部通信は、Akkaを使用して実現されます。しかし、私はすべてのマイクロサービスをどのように認識し、相互に登録するかを知らない。マイクロサービス:Akkaを使用したサービスディスカバリとサービスレジストリ

1)Zookeeperを集中サービスとして使用して、すべてのマイクロサービス(ノード)のすべてのメタデータを保持し、これらのメタデータにアクセスして通信できるようにします。各ノードのメタデータには、他のノードと通信するためのAkkaパス(アドレス)情報が含まれています。

2)すべてのマイクロサービス(Akkaノード)をAkkaクラスタに参加させ、各ノードは互いに通信し合い参照します。 Akka Clusterはゴシッププロトコルをサポートしており、クラスタ内のすべてのノードが一緒に認識できるようにします。

誰でも私にこれに関するいくつかのアドバイスをいただけますか? Akkaの上でサービスディスカバリとサービスレジストリを効率的に設計する方法は?このためのオプションはありますか?

+0

あなたは「マイクロサービス間の内部コミュニケーションはakkaを使用して達成されるでしょう」と書きました。これは、各サービスがakka httpを使用するか、akkaを介して直接通信することを意味しますか? –

+0

私は彼らが(Kryoのシリアル化を使ってTCPを介して)お互いに直接通信することを意味します。サービスがレジストリから検出された後、各サービスはAkka – Barcelona

答えて

1

私はあなたが提案した2番目のアプローチを使用して、似たような分散アプリケーションを構築しています。マイクロサービスはAkkaクラスターで動作し、いくつかの事前定義されたシーダーノードがあります。それぞれのマイクロサービスはロールを使用して自身を識別し、関心のあるロールのリストを持っています。

各ノード/マイクロサービスには、関心のあるノードのパスアドレスを保持する役割を果たすメンバーイベントを聞くアクターがあり、ノード間メッセージのためのルータとして。

私はこのアプローチでうまくいくので、簡単にスケーラビリティを出し入れできます。

関連する問題