私はサイドプロジェクトに取り組んでおり、Skeltonプロジェクトをマイクロサービスとして再設計することを望んでいましたが、これまでのところ、このパターンに従うオープンソースプロジェクトは見つかりませんでした。何度も読んで検索した後、私はこのデザインについて結論を出しましたが、まだいくつかの質問と考えがあります。
ここに私の質問と考えがあります:
あなたのデザインはOKのようです。また、API Gatewayアプローチを使用してマイクロサービスプロジェクトを構築しています。ゲートウェイサービス(GW)を含むすべてのサービスはcontainerized(dockerを使用) Java applications(spring bootまたはdropwizard)。nodejsを使用して同様のアーキテクチャを構築することもできます。質問に関連して言及するいくつかのトピック:
あなたのデザインは大丈夫です。
APIゲートウェイがCAS /ある種の認証(サービスの1つを介して-つまり、ある種のユーザーサービス)を実装する必要があり、すべての要求を追跡し、ヘッダーを変更してリクエスターのメタデータを保持する必要がある場合(内部ACL /スコーピング用)-APIゲートウェイはノードで実行する必要がありますが、負荷分散/ HTTPSを考慮したHaproxyの下にある必要があります
発見は正しい位置にあります-あなたのデザインに合うものを探すならどこにも見えません 領事 。
サービスとAPIゲートウェイにconsul-templateを使用するか、独自のマイクロ検出フレームワークを使用して、起動時にエンドポイントデータを共有できます。
ACL /認証はサービスごとに実装する必要があり、API Gatewayからの最初のリクエストはすべての認証ミドルウェアの影響を受ける必要があります。
「内部」システム内でライフサイクルを追跡できるように、各要求に要求IDを提供するAPI Gatewayで要求を追跡するのは賢明です。
メッセージング/ワーカー/キュー/キャッシュ/キャッシュの無効化などの高速なメモリ内のものにRedisを追加します(1つがないとすべてのMSアーキテクチャを処理できません)-または、分散トランザクションが多く、メッセージングが多い場合は、RabbitMQを使用します
これらすべてをコンテナー(Docker)でスピンして、保守とアセンブルが容易になるようにします。
BIについては、なぜそのためのサービスが必要なのでしょうか。外部のELK Elastisearch、Logstash、Kibanaなど)を使用して、ダッシュボード、ログ集計、巨大なビッグデータウェアハウスを一度に作成できます。