記事のディレクトリ
1.ユーレカとは何ですか
ユーレカは、ネットフリックスのサブモジュールであるコアモジュールの一つです。RESTベースのユーレカは、位置情報サービスのためのサービス、クラウドサービスの発見とフェイルオーバーを実現するために、中間層です。サービスの登録と発見はマイクロサービスアーキテクチャのために非常に重要である、サービスは、発見され、登録されたばかりのサービスの識別子を使用して、あなたがサービスにアクセスできるサービスコールの設定ファイルを変更する必要なし。レジストリZooKeeperのダボと同様に
2.原理
ユーレカサーバーとクライアントユーレカ:CSの設計アーキテクチャを使用してユーレカは、二つの成分がある
ユーレカサーバーを:すなわち、サービス機能の登録サーバー、サービスレジストリ、およびその他のマイクロシステム、顧客サービス、ユーレカの使用など、サービスレジストリサービスを提供しますユーレカサーバーに接続して、ハートビート接続を維持するために、ユーレカクライアントエンド、メンテナンス担当者は、このようなシステムは、各マイクロシステムサービスは、ユーレカサーバーによって適切に機能して監視することができます。春の雲の他のモジュール(例えばZuul)ユーレカServerは、システム内の他のサービスによって発見され、関連するロジックでき
ユーレカクライアント: Javaクライアント、単純化されたユーレカ・サーバとの対話、私たちの地元の等価ですユーレカサーバーの複数の場合は、プログラムサービス、クライアントも内蔵されている負荷ポーリングアルゴリズムのロードバランサは、アプリケーションを起動した後、(デフォルトの時間は30秒です)ユーレカサーバーにハートビートを送信しますハートビートは、ノードを倒すための期間内に受信されない、ユーレカServerはサービスレジストリからこのサービスノード(デフォルト90秒)を削除します
3.自己保護メカニズム
EurekaServerが一定時間(デフォルト90秒)内にハートビートウィジェットサービスインスタンスを受信しない場合、デフォルトでは、キャンセルはインスタンスをEurekaServerます。しかし、ミクロとEurekaServerサービス間のネットワークパーティション障害は、通信できない場合に、サービス自体は、実際にマイクロ健康であるため、上記の行動は、非常に危険になることがあり、これは、このマイクロサービスをオフに書かれるべきではありません。EurekaServerノードが短時間でクライアントをあまりにも多くを失う(ネットワークパーティション障害が発生した可能性がある)、その後、ノードは一度このモードでは、自己保護モードに入り、EurekaServer:「リンプホームモード」この質問によって解決ユーレカレジストリ内の情報を保護するサービスは、もはやレジストリにサービスデータを削除する(つまり、任意のマイクロサービスをオフに書かれていないではありません)。ネットワーク障害回復(すなわち、心拍数が閾値を超えることが復元される)場合、ノードは自動的にEurekaServer自己保護モードを終了します。そのデザイン哲学は次のとおりです。サービス登録情報のではなく、予約エラー、やみくもにすべての可能な保健サービスのインスタンスをオフに書いていません。ライブは生きているよりも優れています。
4.プロジェクトの戦闘
4.1ユーレカサーバ
-
ユーレカを頼りに追加
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
-
上記のマスター・ブート・クラス、ユーレカについてのメモを追加
@SpringBootApplication @EnableEurekaServer // EurekaServer服务器端启动类,接受其它微服务注册进来 public class EurekaServer7001_App { public static void main(String[] args) { SpringApplication.run(EurekaServer7001_App.class, args); } }
-
プロファイル
server: port: 7001 // eureka server 端口号 eureka: instance: hostname: eureka7001.com #eureka服务端的实例名称 client: register-with-eureka: false #false表示不向注册中心注册自己。 fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 service-url: #单机 defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址(单机)。 defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ // 集群
成功し、他のサービスを構築するために、このユーレカサーバを登録することができる(つまり単純ではありません)
4.2ユーレカクライアント
-
依存追加
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency>
-
スタートアップ項目の設定、ユーレカに起動するメインレジスタに@EnableEurekaClientを追加
@SpringBootApplication @EnableEurekaClient //本服务启动后会自动注册进eureka服务中 @EnableDiscoveryClient //服务发现 public class DeptProvider8001_App { public static void main(String[] args) { SpringApplication.run(DeptProvider8001_App.class, args); } }
-
プロファイル
eureka: client: #客户端注册进eureka服务列表内 service-url: #defaultZone: http://localhost:7001/eureka defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ instance: instance-id: microservicecloud-dept8001 prefer-ip-address: true #访问路径可以显示IP地址
これは、ユーレカに登録するために、このサービスを公開します
5.ユーレカと差飼育係
かつての最初の二つの概念の違い:
伝統的なACIDは以下のとおりです。
- (原子)アトミック
- C(整合)一貫
- I(分離)独立性
- D(耐久性)永続
CAPの意味します:
- C(整合)強い一貫
- (可用性)可用性
- P(パーティショントレランス)パーティションのフォールトトレランス
CAPのみを同時に満たすことができない、2点を保証することができます
5.1飼育係そのCPを確保
レジストリへの照会サービスの一覧は、レジストリは、登録情報の前に数分を返さ耐えることができますが、直接ダウンサービスを受け入れることができないときは出て使用できません。そのサービスの一貫性よりも可用性のための登録要件を、しかし、ネットワークが接触不良を失ったので、残りのノードは、再選挙のリーダーとなり、他のノードとするとき、マスタノード状況が、リーダー選挙の時もZKは長すぎます、30〜120秒、およびクラスタ全体のZKは、ネットワークの問題により、クラウド・デプロイメント環境の下で、選挙登録サービス中に麻痺につながった、選挙の際には使用できませんマスターZKクラスタノードの損失につながった大きな確率が起こるです事、サービスは最終的に回復しますが、長期使用の登録につながった選挙のタイミングが許容されていないものの、
5.2ユーレカそのAPを確保
可用性を確保することを優先。ユーレカ各ノードは等しく、残りのノードはまだ登録と照会サービスを提供することができ、いくつかのノードが正常なノードには影響しませんハング、。接続障害に登録ユーレカクライアントが発見され、それが自動的に限り、ユーレカがまだあるとして、我々は登録サービスがご利用いただけます保証することができ、他のノードに切り替わります(可用性を確保するために)が、情報が最新ではないかもしれません照会(それは強い保証するものではありません)の一貫性を。15分・ノードで85%以上が、通常のハートビートでない場合はまた、自己保護メカニズムユーレカがあり、その後、クライアントはユーレカとみなされ、ネットワーク障害の登録センターは、以下が表示されます。状況:
- ユーレカは、もはや長時間削除され、リストからハートビート期限切れの登録サービスを受けるべきではありません
- ユーレカはまだ新しいサービスの登録およびクエリの要求を受け入れることができるが、他のノード上で(現在のノードがまだ使用可能であることを保証するために、それがある)に同期されません
- ネットワークが安定している場合、新規登録情報の現在のインスタンスは、他のノードと同期します
したがって、ユーレカは、ネットワーク障害に対処するために非常に良いことができなく飼育係のような全体の登録サービスの麻痺として、接触を失ったいくつかのノードにつながります