ディレクトリ
ユーレカシリーズ(02)ユーレカ・コヒーレンス・プロトコル
ユーレカは、サービス発見サーバとクライアントを含む、AP Netflixのサービスに基づくミドルウェアモデルによって発見されました。まず:関連文書が推奨春クラウドユーレカの公式サイト、及び第二、ユーレカソース分析。
ばねクラウドスタータのNetflix、ユーレカ-2.1.1.RELEASEユーレカ-1.9.8に基づいてソースコード分析のこの一連。
1.比較サービス検出プログラム
1.1テクノロジーの選択
技術選択 | CAPモデル | アプリケーションのスコープ(推奨) | コンソール管理 | コミュニティ活動 |
---|---|---|---|---|
ユーレカ | の | <30K | サポート | 低いです |
飼育係 | CP | <20K | サポートしていません。 | で |
領事 | の | <5K | サポート | 高いです |
ナコス | / CFの | 100K + | サポート | 我々はそれに依存している☺ |
注意:上記データは、から来ている馬英九・テクノロジー毎週。
1.2データモデル
フレーム | クラスター(フレームワーク) | アプリケーションサービス | クラスタサービス | サービスの例 | リース管理 |
---|---|---|---|---|---|
春クラウド | - | (サービスID) | - | ServiceInstance | - |
ナコス | サーバ | サービス | 集まる | インスタンス | - |
ユーレカ | (serviceURLの) | アプリケーション(appNameの) | - | InstanceInfo(ID) | リース |
別のフレーム構造は、この大会を行う際に、対応するデータと一致しません。
- サーバークラスタサーバーは:ユーレカServerクラスタ自体を指します。代わりに、サーバーを使用するのではなく、ピアサーバーまたはに代わって、短期では、などのサーバリストであってもよい、またはクラスタ自体のノードのフレームワークに関連しています。
- サービスサービス:アプリケーションを表し、複数のサービスインスタンスが含まれていてもよいです。
Service(服务)
またはserviceId
またはApplication(应用)
またはappName
。 - クラスタクラスタ:サービスは、より多くのクラスタを含むことができ、クラスタは、より具体的な例が含まれています。これはナコスの概念です。
- サービスインスタンスServiceInstance:外務員の具体的な例。
ServiceInstance(服务实例)
またはInstanceInfo(实例id)
かInstance(实例)
。
2.ユーレカ・コヒーレンス・プロトコル
ユーレカと飼育係の最大の違いは:ユーリカはAPのモデルであり、飼育係は、CPモデルです。分割脳と他のシーンが表示されたら、エウレカが各1の利用可能性である、それは脳が分割表示されたら、各パーティションがまだ独立したサービスを提供することができ、分散化されています。もっとユーレカのZooKeeperのと比較します。
ユーレカはそれの究極の一貫性はどのようにあることを?
2.1ブロードキャストメッセージ
ユーレカServerは、サーバーリストのすべてを管理(PeerEurekaNodes)
ユーレカServerが登録されているクライアント、オフライン、心拍数の要求を受信した場合、PeerEurekaNodeによってメッセージは、サーバの残りの部分に放送し、放送はタスクがタスクをキャンセル延滞するまで再試行に失敗した場合、そのデータは2つのサーバー間であります短い矛盾。
注:メッセージのブロードキャストが失敗したものの、しかし限り、クライアントがハートビートを受け取ったとして、ハートビートタスクは、(リンクサーバーの障害を含む)すべてのサーバーにブロードキャストします。
ネットワークが正常に戻った場合は、他の3例があるかもしれません、その場合には、ハートビートタスクサーバーの放送を受信しました:
- まず、スプリットブレインがすぐに回復し、すべてが正常です。
- 第二に、例では、自動的に再登録、有効期限が切れてきました。
- 第三に、データの矛盾、矛盾は、あなたが同期要求を開始する必要があり、実際には、それは古いインスタンスに加えて再生しながら、一度再登録することです。
要するに、あなたはクラスタによってブロードキャストメッセージ間のデータの究極的な一貫性を達成することができます。
2.1.2サービスの登録
- 春クラウドユーレカアプリケーションが起動し、EurekaAutoServiceRegistrationこのクラスの初期化、ユーレカサーバ側登録への取り組み。
- ユーレカがタスクを実行するために40秒のタイミングの完了を開始した後に開始されます、タスクが登録打ち上げ再なり、自身と自身の構成情報が変更された場合は、変更されたIP情報を監視することになります。
- 更新が404のステータスコードを返した場合、それは再登録に行きます
2.1.3アクティブオフライン
最初に自分のステータスがDOWNに、その後、ユーレカServerの下でcancleするコマンドを送信します春のコンテナ破壊されたシャットダウン方法は、そのサービスを要求したときユーレカが実行されます。
ハートビート自動ログオフと2.1.4の契約
ヘルスモニタリング、通常TTL(生存時間)のメカニズム。例:クライアントは、15Sサーバは、30代のハートビートパケットは、受信サービスの一覧から削除されていない、インスタンス状態が不健康で更新し、ハートビートパケットを受信しなかったハートビートごとに5秒を送信します。
ユーレカServerのデフォルトのハートビートパケットが30秒ごとに送信され、90年代未回収ハートビートが削除されます。クリーンアップスレッドは、例えば、有効期限が切れ、すべての60年代を行いました。
2.2クラッシュリカバリ
2.2.1再起動
春クラウドユーレカは初期設定で起動するとEurekaServerBootstrap#initEurekaServerContextはPeerAwareInstanceRegistryImpl#syncUpはユーレカの他のデータを同期呼び出します。
2.2.2スプリットブレイン
- スプリットブレインが発生した後:ユーレカServerサービスを、同じ領域にアクセスすることができ、サービスの異なる領域が自動的に有効期限が切れています。
- 脳スプリット回復:ユーレカSeverの心から送信された他の要求を受け取り、そして3例があります:まずスプリットブレインすぐに回復し、すべての通常のは、第二には、例としては、自動的に再登録期限が切れてきた、第3のデータの衝突を、矛盾が生じ、あなたは同期要求を開始する必要があります。
3.信頼性
3.1 HAクライアント(クライアントHA)
ユーレカサーバが複数ある場合、最初のダウンタイム次のステーションからのデータを同期。注:最初は、第二の前にダウン同期のみ、それ以外の場合は、常に最初の同期データとなります。
3.2自己保護
しきい値よりも毎分更新の数が少ない場合は、自己保護メカニズムを開いて、その後、ユーレカサーバーは、期限切れのインスタンスをクリアするためのイニシアチブをとることはありません。
毎日少しを記録する意向。おそらく、内容は重要ではありませんが、習慣は非常に重要です!