18

マイクロサービス アーキテクチャに関する記事のトーンを実際に読んでいるのですが、それらは説明を深めることなく、可能な限り簡単な方法で物事を扱っているようです。

私の質問を説明するために、実際の小さなアーキテクチャを示します。

ここに画像の説明を入力

そこで、使いたいのがこちら。技術的に何かを作る前に、もっと理論的な情報が必要です。

私のドメインの説明

私には、アプリケーションに接続し、ユーザー情報を取得し、購入したものに関する請求情報を参照できる、モバイルおよびブラウザー ベースの顧客が何人かいます。

モノリシック アプリケーションでは、次のアーキテクチャを使用します。 - 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 プロトコルを使用したほうがよいのはいつですか?

前もってありがとう

4

1 に答える 1

10

/

いいえ、Zookeeper のようなサービス レジストリはメモリ内にあり、高スループットと低レイテンシを保証します。

b/

Zookeeper のような Service Registries では、サービスの登録のようにファイルシステムのパスを作成できます。例: /App1/Service1 および /App1/Service2

c/

何が問題なのかはっきりしません。

日/

誰かが推奨しているパターンは、API レスポンスで推奨されているHATEOASパターンです。

e/

AMQP は、サービス間で通信が必要な場合にのみ必要です。1 つのサービスから別のサービスの API を直接呼び出してはなりません。

編集

c/

その場合、フォールバック ロジックを実装する必要があります。たとえば、サービスが利用できない場合、タイムアウトまたはその他の障害が発生した場合、いくつかのアクションを実行する必要があります。Netflix のHystrixのようなツールは、これを実現するのに役立ちます。

e/

通信パターンは、非対称ではなく対称でなければなりません。以下のように、ここに画像の説明を入力

このパターンにより、マイクロサービス間の疎結合が可能になり、柔軟性が実現します。

于 2015-04-16T09:43:33.603 に答える