ではSpringcloud
マイクロサービスの多くは、あなたが一元管理サービスのサービス管理センターを必要とする場合は、プロジェクト、サービスプロバイダは、サービス、消費者向けサービス、消費者向けサービスを提供し、そしてサービスを呼び出す消費者が検索し、管理センターに行くことができます私たちは、サービスコールを呼び出す必要があります。
Eureka
でSpringcloud
、登録と発見、およそ以下の大手レコードで最も一般的に使用されるサービスなどの組み立てEureka
の基本原則および使用方法。
ユーレカは何ですか
Eureka
あるNetflix
原則AP CAP理論に基づいて、CSのアーキテクチャを使用するコアモジュールの一つ、それはサービスの発見とフェイルオーバーのための高可用性サービスレジストリです。
ユーレカアーキテクチャ
以下のように要約ユーレカ原理:
-
Eureka Server
マイクロサービスクライアント(場合、始動後Eureka Client
/Application Client
時)を開始し、サービスの構成情報に基づいて、(サービスホストIP、ポート、サービス名等)が登録されているEureka Server
中で、 -
ユーレカクライアント(
Eureka Client
/Application Client
サービス(サービス等のホストIP、ポート、サービス名、)の構成情報に基づいて時間)開始を、登録されているEureka Server
中で、 -
ユーレカサーバーへユーレカServerの複製複製によって追加の各ノードの同期サービスの情報をクラスタ化します。
-
サービスの消費者はマイクロサービスを呼び出すと、利用可能なサービスを見つけるために、ユーレカサーバーにアクセスしてください。
-
ユーレカサーバーの入手可能な情報を見つけることによって、サービス、ユーレカクライアントコールに戻りました。
ユーレカの自己保護メカニズム
ユーレカServerは、ユーレカクライアントを起動した後、指定された期間(デフォルトの90年代)内のハートビートは、サーバーで、その結果、クライアントの心を受信しなかった場合は30秒ごとに受信しませんでした、彼らの可用性ステータスを示すために、ユーレカサーバーのハートビートに送信されます2つのタイプに分けることが理由クライアントのハートビート:
- クライアントが実際にダウンしており、サービスを提供することはできません、この時間ユーレカServerは、合理的にログアウトして、クライアントのレジストリに情報を削除する必要があります。
- 登録情報が削除された場合、それは不合理かつ危険である。この時点でクライアントサービス自体は正常ですが、ネットワークパーティションのリードによるクライアントのハートビートコレクションサーバーを受けていない、クライアント。
ユーレカServerは自己保護メカニズムを開始しますので、上記の二つの点を踏まえ、ユーレカServerは、ハートビートが原因原因クライアントに受信されないかを決定することはできません。もはやサービスが本当にない場合でも、マイクロ情報サービスのいずれかの登録と取り消しを削除しますと。ネットワークは、(クライアントはすべての通常のハートビートを送信することができます)正常に戻ったとき、ユーレカServerは、自己保護を起動します。
ユーレカの他の自己保護メカニズム:15分以上は85%のクライアントのハートビートを受信しない場合には、EurekaServerは、ネットワークパーティションのエラーを考えて、次のようになります。
- ハートビートが登録センターからクライアントの期限切れ送信しませんでした長い時間のための任意の登録情報を削除するわけではありません。
- 受信した新しいクライアントのハートビート場合は、もはや同期ノード。
- ネットワークが正常に戻った場合(通常のハートビートは、クライアントの受信)、同期ノード情報。
ユーレカのハイアベイラビリティ
分散データベースシステムはP(パーティショントレランスパーティションがフォールトトレランス)が保証され、対処されなければならない、C(一貫強い整合性)とA(Avalibaleで入手可能)を同時に満たすことができない、ネットワーク上の理由パーティションによるCAP定理を満たし、それが必要な必要がありますトレードオフ2の間。ユーレカAP原理は、高可用性クラスタを確保するために実装されています。
ユーレカは、クラスタ内の各ノードは、ノードがダウンした後には、マスタースレーブ(マスタとスレーブ)の関係は、他のノードがサービスを提供し続ける、影響されないがない、等しく、ユーレカロードバランサは見えます他の利用可能なノードは、すべてのノードが使用できない場合を除き、サービスを提供し続けています。
ユーレカと飼育係の違い
飼育係CPが実装の原理に基づいているマスターノードに障害が発生した場合、マスタ・スレーブモードを使用して、クラスタは、他のスレーブノードは、新しい母校選挙、一般的な30代-120Sにおける選挙プロセス、時間中の全クラスタであろうそれは利用できません。
ユーレカは、高可用性とAPの原理に基づいて達成されます。
Springcloud中ユーレカプロジェクト
1.ユーレカサーバのビルド
- pom.xml:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
- application.yml:
server:
port: 7010
eureka:
instance:
hostname: eureka7001.com #服务主机名
client:
register-with-eureka: false #不把自己注册进注册中心
fetch-registry: false #发现服务时不用检查自己
service-url:
# 单机时只需指定自己
# defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka
#集群中不必指定自己,只需指定其他的节点的访问地址 ,中间用逗号分隔
defaultZone: http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
- EurekaServerを有効にするには、注釈を追加するためのマスターブートクラス
@SpringBootApplication
@EnableEurekaServer // 启用EurekaServer
public class App {
public static void main( String[] args ) {
SpringApplication.run(App.class, args);
}
}
- アクセスアドレスがブラウザを設定し、レジストリページユーレカにアクセスすることができます
ユーレカクライアントの構築
- pom.xml
<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>
- application.yml
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
instance:
appname: aitao-sevice-usercenter8003
prefer-ip-address: true # 可以显示微服务主机ip
- 追加するクラスを開始し
@EnableEurekaClient
、コメントを。