私はマイクロサービスの開発に不慣れですが、SpringのドキュメントとNetflixのドキュメントの両方を読んで、しばらくの間マイクロサービスについて研究してきました。
Githubで利用できる簡単なプロジェクトを開始しました。これは基本的に、Eurekaサーバー(アルキメデス)と3つのEurekaクライアントマイクロサービス(1つはパブリックAPI、2つはプライベート)です。詳細な説明については、githubのreadmeを確認してください。
重要なのは、すべてが実行されているときに、プライベートマイクロサービスの1つが強制終了された場合、Eurekaサーバーがそれを認識してレジストリから削除することです。
Stackoverflowでこの質問を見つけました。ソリューションenableSelfPreservation:false
は、Eurekaサーバー構成で使用することで合格します。しばらくすると、これを実行すると、強制終了されたサービスが期待どおりに消えます。
ただし、次のメッセージが表示されます。
自己保存モードがオフになっています。これは、ネットワーク/その他の問題が発生した場合にインスタンスの有効期限を保護しない場合があります。
1.自己保存の目的は何ですか?ドキュメントの状態、その上の自己保存と「クライアントはもはや存在しないインスタンスを取得することができます」。では、いつオン/オフにすることをお勧めしますか?
さらに、自己保存がオンの場合、Eurekaサーバーコンソールの警告で未処理のメッセージが表示される場合があります。
緊急!EUREKAは、そうでない場合でも、誤ってクレームインスタンスがアップしている可能性があります。更新はしきい値よりも少ないため、安全のためにインスタンスの有効期限が切れることはありません。
さて、SpringEurekaコンソールを続けます。
Lease expiration enabled true/false
Renews threshold 5
Renews (last min) 4
しきい値カウントの奇妙な動作に遭遇しました。Eurekaサーバーを単独で起動すると、しきい値は1になります。
2. Eurekaサーバーが1つあり、registerWithEureka: false
別のサーバーに登録されないように構成されています。それでは、なぜそれがしきい値カウントに表示されるのですか?
3.クライアントごとに、しきい値カウントが+2ずつ増加し始めます。毎分2通の更新メッセージを送信しているからだと思いますよね?
4. Eurekaサーバーは更新を送信しないため、最後の最小更新は常にしきい値を下回ります。これは正常ですか?
renew threshold 5
rewnews last min: (client1) +2 + (client2) +2 -> 4
サーバーcfg:
server:
port: ${PORT:8761}
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
enableSelfPreservation: false
# waitTimeInMsWhenSyncEmpty: 0
クライアント1cfg:
spring:
application:
name: random-image-microservice
server:
port: 9999
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
healthcheck:
enabled: true