自己保護モードのユーレカプロジェクトSpringCloud

ユーレカServerが一定の時間内にハートビートマイクロサービスインスタンスを受信しない場合、デフォルトでは、ユーレカServerは、インスタンス(デフォルト90秒)をログオフします。ネットワークパーティション障害がミクロと通信できないユーレカServerサービスの間で発生した場合でも、上記の行動は非常に危険になる可能性 - ミクロサービス自体は、実際に健康であるため、これは、このマイクロサービスをオフに書かれるべきではありません。

「リンプホームモード」を通じてこの問題を解決するためのユーレカ - ユーレカServerノードを短時間でクライアントをあまり失う(ネットワークパーティション障害が発生している場合があります)、そのノードは、自己保存モードになります。一度このモードでは、ユーレカServerサービスは、(任意のマイクロサービスをオフに書かされていない)データもはやサービスレジストリを削除し、レジストリ内の情報を保護します。ときにネットワーク障害回復、ユーレカサーバー・ノードは自動的に自己保護モードを終了します。

要約すると、自己保護モードは、ネットワークの異常に対応するためのセキュリティ対策です。すべてのマイクロサービス(保健サービスと不健康なマイクロマイクロのサービスが維持されます)、また任意の健全なマイクロサービスの盲目的取り消しを保持しつつ、そのアーキテクチャは、哲学むしろあります。ユーレカクラスターは、より堅牢で安定できるように、自己保護モードを使用します。

春クラウドで使用することができeureka.server.enable-self-preservation = false 、自己保護モードを無効にします。

 

視覚的なパフォーマンスに自己保護は次のとおりです。

 

次のように公式の説明は次のとおりです。

ユーレカサーバーが開始されると、それは、隣接ノードからすべての登録情報を取得しようとします、
あなたは問題では近隣からの情報を取得する場合、サーバは、すべてのノードが失敗したまでは、他のノードから取得しようとします。
このサービスが正常に登録情報を他のノードから取得した場合、それは、これらの設定に基づいて、フラッシュのしきい値(ハートビートしきい値)です。
モーメントは、心拍数がインスタンスを削除停止します。このサービスの値のしきい値パーセンテージを下回っている場合は、自己保存モードに、つまり、すでに登録されている現在のインスタンスに関する情報を保護します。
 
次のように特定の自己保護ロジックは次のとおりです。
  1. ユーレカ・サーバに登録された2つのクライアントは、各クライアントは、ハートビートごとに30代を送信し、サーバは4拍を受けた分かかりますと仮定します。(eureka.instance.registry.expectedNumberOfRenewsPerMinを設定することによって)最小値1ビートに加え、この春に基づいて、この方法は、最小心拍数は5となっており、この値が最小閾値必要パーセンテージ0.85(ユーレカ乗算され.server.renewalPercentThreshold)、それは約自体よりも大きい最小の整数* 0.85 = 4.25 5 - > 5。この閾値は、(設定eureka.server.renewalThresholdUpdateIntervalMsにより)15分ごとに更新されるため、このサーバで15分以内の任意の時点での心拍数は自己保存モードに5倍未満、サーバー移行を受け、そしてインスタンス情報を削除し停止。 
  2. ユーレカサーバは、各クライアントが30秒ごとの固定周波数ハートビートで送信されているものとします。所望の分(2 + 2 + 1)* 0.85 = 5ビートを受信する場合、2つの登録されたクライアント、サーバー受信数がこの値よりも小さい場合、それは自己保存モードが有効になります。各クライアントは、心が(一度10S)をはるかに高速ビート送ることになりましたと、サーバーは、サービスがダウンし、また予想の5倍よりもさらに大きな6回、受信、そうではないがあっても、1分間に12回を受け取ることになります自己保存モードをトリガする公式が変更eureka.instance.leaseRenewalIntervalInSeconds価値を提案していない理由である、解雇ただろう。 

おすすめ

転載: www.cnblogs.com/yunyunde/p/11205234.html