アポロ学習仕上げ:全体的なデザイン

まず、アーキテクチャ図
第二に、コアモジュール
  1. ConfigService
    1)インターフェイスコンフィギュレーションの取得を提供します
    2)、4C8G実測仮想マシンの使用が10,000を支持することができる(それによって大幅にTomcatが現在のデフォルト設定を使用して埋め込むこと万の接続(調整することができるまでであり、接続の数の長さを増加させる、サービスの最終使用スプリングDeferredResult非同期)インターフェイスコンフィギュレーションプッシュを提供接続は、そう(長い接続を開始するアプリケーションの一例)のニーズを満たすために
    3)アポロクライアントにサービスを提供
  2. AdminService
    1)構成管理インターフェースを提供
    2)インターフェイスを公開する設定変更を提供
    ポータルを管理するための3)サービス・インターフェース
  3. クライアント
    1)構成アプリケーションを取得することを支持リアルタイム更新
    2)メタサーバによるサービスConfiigServiceのリストを取得します
    3)ConfigService呼び出すクライアント負荷SLBを使用して
  4. ポータル
    1)構成管理インターフェース
    2)メタサーバによってサービスにAdminServiceのリストを取得
    3)にAdminService呼び出すクライアント負荷SLBを使用して
 
第三に、補助的なサービス発見モジュール
  1. ユーレカ
    1)ユーレカと春クラウドNetflixのに基づいて、サービスの発見と登録を提供
    2)コンフィグ/にAdminServiceは、インスタンスのハートビートを登録し、定期的に報告します
    3)とConfigService(なぜ?展開を簡素化するために)展開と一緒に暮らします
    4)構成サービスおよび管理サービスは、マルチインスタンス、ステートレス展開している、あなたは自分自身を登録すると、ハートビートユーレカを維持する必要があります
  2. メタサーバ
    ドメイン名メタサーバGETにAdminServiceアドレスリストによる1)ポータルへのアクセス
    ConfigServiceアドレスリストを取得することで2)クライアントアクセスメタサーバドメイン
    3)私たちはユーレカ・ディスカバリー・ポータルのためのインタフェースとクライアントのための床のメタServerサービスパッケージの上に立つユーレカプロキシ(ユーレカへの対応は、HTTPインタフェース管理サービスとConfigを介して取得することはありません
    4)論理ロール、及びConfigServiceは一緒に住んでいると同じJVMプロセスにデプロイ
    5)メタサーバ+ユーレカ= k8s.service(エンドポイントによって実際のアクセスを提供するために、エンドポイントの機能を参照)
  3. NginxLB
    1)およびドメインネームシステム連携と支援ポータルアクセスメタサーバGETにAdminServiceアドレスリスト
    2)およびドメインネームシステム協力し、クライアントアクセスメタサーバ取得ConfigServiceアドレスリストを支援
    3)およびドメインネームシステム連携とPortal構成管理にアクセスするためのユーザを支援
第四に、サーバ側の設計
  1. リアルタイムのプッシュのリリース後
    1)ユーザが動作している構成ポータルを掲載しました
    2)ポータル管理サービスコールインタフェース動作リリース
    3)管理サービスは、リリース構成した後、各構成サービスにReleaseMessageを送ります
    4)構成サービスをReleaseMessageを受けた後、対応するクライアントに気づきます
  2. 実装ReleaseMessage送信(データベースの実装を経由して、簡単なメッセージキュー)
    1)管理サービスは、コンフィギュレーション後にリリース録音されたメッセージを挿入しReleaseMessageテーブルを行くだろう、それは、configureメッセージの内容にAPPID +クラスタ+名前空間を掲示しています
    2)構成サービスは、新しいメッセージのレコードがあるかどうかを確認するために毎秒ReleaseMessageテーブルをスキャンするスレッドがあります
    3)構成サービス新しいメッセージレコードを見つけた場合、そのようなNotificationControllerV2として、すべてのニュースをリスナーに通知します
    4)NotificationControllerV2解放構成がAPPID +クラスタ+名前空間を取得した後、通知対応クライアント
  3. 構成サービスは、クライアントの実装を通知します
    / v2のインターフェイスの通知の構成サービスへの1)、クライアントが開始HTTPリクエスト
    2)NotificationControllerV2はすぐに結果を返しませんが、保留中の要求春DeferredResultで
    あなたは60秒以内にリリースされ、当該クライアントを設定しない場合3)、その後、クライアントへのHTTPステータスコード304を返します。
    あなたがリリースを懸念クライアントを構成した場合4)、NotificationControllerV2は、入ってくる情報のsetResult方法DeferredResultは、名前空間の構成の変更があり、要求はすぐに戻ります呼び出します。名前空間の構成の変更に返された結果からクライアントを取得した後、我々はすぐに名前空間の最新の設定を取得するために構成サービスを要求します
第五に、クライアントの設計
  1. それが更新された設定を取得するために最初の時間をプッシュすることができるように、永続的な接続を維持するために、クライアントとサーバー
  2. また、クライアントは、アポロの流通センターからアプリケーションサーバの最新の設定を引くタイミング
    1)これは、プッシュ機構を更新するように構成されていない防ぐために、障害の原因となる、フォールバック機構であります
    変更なし - 2)クライアントが引っ張ってのローカルバージョンのタイミングなので、通常の状況下では、プルの動作のタイミングは、サーバーが304を返すことを報告します
    3)デフォルトのタイミング周波数引き込みが5分ごとに一度、クライアントは、実行時に指定することができるシステムプロパティです:設定を解除することはできませんが、自動的に回線に更新されます。apollo.refreshInterval(すなわち分で、カバー)
  3. アプリケーションの最新の設定にアポロフィギュレーションセンターサーバからクライアントを取得した後、これをメモリに保持されます
  4. クライアントは、ローカルファイルシステムキャッシュ内の構成をリストア構成にサーバから取得するサービスの顔には使用できない、またはネットワークがまだローカルから、意味がないときます
  5. アポロクライアントから最新の設定のためのアプリケーションは、(アポロコンフィギュレーションの変更を開始)を設定する更新通知にサブスクライブ
第六に、関連するモニタリング
  1. アポロクライアントとサーバは、現在、あなたの会社がある限り、自動的CAT RBIが可能になります猫クライアントアポロの導入として、内部CAT語を展開しているそうだとすれば、CAT自動的に実行を支援しています。
  2. あなたはCATを使用しない場合は、長い無導入猫-クライアントとしてとして、心配しないで、アポロはCAT RBIが有効化されていません
 七、ユーザビリティデザイン
シーン
影響を及ぼす
降格
理由
A台湾コンフィグサービスをオフライン
影響なし
 
構成サービスステートレスクライアント、他の構成サービスの再接続
すべての構成サービスオフライン
クライアントは、ポータルに影響を与えずに、最新の構成を読み取ることができません
クライアントの再起動は、ローカルにキャッシュされたプロファイルを読み込むことができた場合
 
組立ラインオフ管理サービスステーション
影響なし
 
管理サービスのステートレス、ポータル他の管理サービスの再接続
すべての管理サービスをオフライン
クライアントは影響を与えなかった、ポータルの構成を更新することはできません
 
 
台湾ポータルオフライン
影響なし
 
SLBバインド複数のサーバによってポータルドメインは、利用可能なサーバを指してもう一度お試しください
すべてのポータルオフライン
クライアントは影響を与えなかった、ポータルの構成を更新することはできません
 
 
データセンターのオフライン
影響なし
 
マルチデータセンターの展開、データが完全に同期され、メタサーバー/ PortalドメインSLBスイッチによって自動的に他の生き残りのデータセンターへ
 
 

おすすめ

転載: www.cnblogs.com/jayce9102/p/12607553.html