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