マイクロサービス アーキテクチャに関する記事のトーンを実際に読んでいるのですが、それらは説明を深めることなく、可能な限り簡単な方法で物事を扱っているようです。
私の質問を説明するために、実際の小さなアーキテクチャを示します。
そこで、使いたいのがこちら。技術的に何かを作る前に、もっと理論的な情報が必要です。
私のドメインの説明
私には、アプリケーションに接続し、ユーザー情報を取得し、購入したものに関する請求情報を参照できる、モバイルおよびブラウザー ベースの顧客が何人かいます。
モノリシック アプリケーションでは、次のアーキテクチャを使用します。 - Mobile / Angular-Ember を使用したプレゼンテーション レイヤー - その前に NGINX を使用した REST API を使用したビジネス レイヤー - 標準の MySQL データベースを使用した DAL - スケーラビリティは X 軸にのみ適用されます
この場合、マイクロサービス アーキテクチャを使用したいと考えています。なぜなら、それは「ドメイン スケーラブル」で非常に柔軟だからです (もちろん、それについてもう少し学びたいからです)。
スキーマでは、各サービスで、関連する API によって公開される唯一の HTTP URL があります。
質問
a/ (1) フラックスでは、「モバイル」はhttp://myDomain.or/authで http リクエストを送信します。
私の考えでは、APIGateway は標準のサービス レジストリ (Eureka、ZooKeeper など) に、AuthSrv にアクセスできるかどうかを確認し、ネットワーク アドレスを取得できるように依頼できます。その後、ApiGateway は AuthSrv を要求し、サーバーに応答できます。
それはそれを機能させる良い方法ですか?データにアクセスするために X マシンを処理する際に、遅延の問題はありませんか?
b ) フラックス (2) は、サービス レジストリを調べます。/auth/other (公開されている場合) のような子 URL であっても、/auth に対するすべての要求が、このアドレス ip:port のこのサービスに関連していることを、サービス レジストリはどのように理解できますか?
c/フラックス (3) は、サービス レジストリに利用可能な AuthSrv があることを示しています。(3 bis) はその他を示しています: AuthSrv は利用できません。小さなアプリケーションでは、いつか責任を失うことを認めることができますが、何百ものサービスがリンクされている大きなシステムでは、サービスの不足にどのように対処できるでしょうか?
d/別の投稿で、ユーザー、別のサービス、および別のデータベースに関連する請求情報を保存する方法を尋ねていました。
標準アーキテクチャでは、次のようになります。
{
billingInformations:{...},
billingUser:ObjectId("userId")
}
マイクロサービス アーキテクチャでは、次の使用が推奨されました。
{
billingInformations:{...},
billingUser:"/user/12365" // URL corresponding the the user Resource in the other service
}
これは「サービスデータ共有」を処理し、サービスを結合しないための最良の方法ですか?
e/この特定のケースで、HTTP プロトコルの代わりに AMQP プロトコルを使用したほうがよいのはいつですか?
前もってありがとう