序文
月曜日に今週から、ホーム検疫スタッフが、仕事に戻って、その新しい年次総会のことができるように開発し、私の前にナンセンスのキャリアを拡大していきます完了しました。少なからず準備は、心配の痕跡はありませんので、あなたが表示されます。仕事のために、姿勢調整を学び、そして今週ずっと簡単に、しかしまだ少し忙しい、あるいは物事の束。
今週の学習に、SpringCloudコンポーネントに追いつくの多くは、主に装うが覆われていた呼び出しプロセスのユーレカのソースを見ました。ユーレカの理解の以下の主な話。
A、EurekaServer
コアサーバクラスはPeerAwareInstanceRegistryImpl、そのメンバ変数peerEurekaNodesストアは、すべてのサービスノードということです。それはSmartLifecycleインタフェースは春の終わりに初期化されて実装しながら、Springコンテナ注入初期化EurekaServerAutoConfigurationの意志EurekaServerInitializerConfigurationでは、その開始方法が表示されます。startメソッドで:
デーモンスレッド実行中のタイマーとタイマーですInstanceRegistry#openForTraffic、最終的に呼ばれるevictionTimer.schedule(EvictionTask)を呼び出しコールEurekaServerBootstrap#contextInitializedメソッドは、期限切れのEvictionTaskの方法を実行するために60秒ごとに実行しますカリングの例。
二、EurekaClient
クライアントのコアクラスあって、initScheduledTasksメソッドによって初期化、コンストラクタクライアントタイマーで、DiscoveryClientです。
CacheRefreshThread:サーバー最新のサービス一覧情報を同期する30秒ごと。
HeartbeatThread:サーバー契約ごとに30秒;
InstanceInfoReplicator:サーバーの同期に30秒ごとに情報InstanceInfo、いつでもそこにinstanceStatusの変更は、同期をトリガーします。
第三に、サービス登録プロセス
clientConfig.shouldEnforceRegistrationAtInit()がtrueを返すとclientConfig.shouldRegisterWithEureka()trueを返した場合、クライアントが起動した後、それ以外の時間は、サーバーに登録されます初めてのハートビートをトリガーするために必要な、サーバにすぐに登録されます。あなたが登録呼び出すと、最終的にHTTPを介してサーバに転送され、他のEurekaServer情報への再同期を登録した後、ApplicationResource#ADDINSTANCE方法、サービス登録までを呼び出します。
1 公共 ボイドレジスタ(最終 InstanceInfo情報、最終 ブールisReplication){ 2 INT leaseDuration = Lease.DEFAULT_DURATION_IN_SECS。 3 であれば(info.getLeaseInfo()!= NULL && info.getLeaseInfo()getDurationInSecs()> 0 ){ 4 leaseDuration = info.getLeaseInfo()getDurationInSecs()。 5 } 6 スーパー.register(情報、leaseDuration、isReplication); //注册服务 7 replicateToPeers(Action.Register、info.getAppName()、info.getId()、情報、NULL、IsReplication); //は他のEurekaServer同期するために新しいサービスを追加 8 }
追伸
クライアントはまたEurekaServer依存性を発見した、と各クライアントサーバーの初期設定が初期化されます、それは理解することができる。サーバは、サーバ+クライアントは、デュアルアイデンティティを持っているとして、それは他の情報に30秒ごとにサーバーの同期サービスになります見ることができ、更新情報ローカルリスト。