.Enrekaを紹介
ユーレカは、サービス発見フレームNetflixの開発であるRESTベースのサービス自体は、中間層は、主にロードバランシングとフェイルオーバー中間層サービスの目的を達成するために、測位演算AWSサービスドメインのために使用されます。SpringCloudはSpringCloudサービスの発見を達成するために、そのサブプロジェクトスプリング・クラウドはNetflixでそれを統合します。
ユーレカサーバーとユーレカクライアント:ユーレカの2つのコンポーネントで構成されています。
ユーレカServerサービスの登録サービスは、各ノードが開始した後、サービスレジストリ内のすべての情報の入手可能な情報サービスノードを格納するEurekaServerので、それは、ユーレカサーバーに登録され、サービス・ノードは、インターフェースで視覚的に見ることができます。
Javaのユーレカクライアントクライアントが内蔵されたポーリング(ラウンドロビン)負荷負荷分散アルゴリズムであり、単純化されたユーレカサーバーと対話するためのクライアントです。
ユーレカServerは、複数の心拍心拍期間内のノードを受信しない場合、アプリケーションが起動した後、ユーレカサーバーのハートビートに送信されます、既定の期間は、30秒で、レジストリからユーレカServerサービスは、サービスノードを配置します(デフォルト90秒)を取り外します。
ユーレカサーバー間の同期は、データをコピーする方法によって達成され、ユーレカはユーレカServerのすべてのクライアントが、まだ他のサービスのキャッシュAPIの消費量の情報を使用することができ、ハングアップします場合でも、クライアント側キャッシュ機構を提供します。要約すると、ユーレカハートビートチェック、クライアントのキャッシュ機構は、高いシステムの可用性、柔軟性と拡張性を確保します。
図は、簡単に3つの文字からなる、ユーレカの基本的なアーキテクチャについて説明します。
1、ユーレカサーバー
-
サービスレジストリと発見を提供
2、サービスプロバイダー
-
サービスプロバイダ
-
ユーレカへのセルフサービス登録、サービスの消費者は、見つけるためになるように
3、サービス消費
-
コンシューマーサービス
-
ユーレカから登録されたサービスのリストを取得し、それによって消費者サービス
II。モノマー建物
1.pomに依存して追加します。
次のようにSpringCloudとSpringBootバージョンの対応は次のとおりです。
依存性を追加します。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.Application起動クラスの注釈
@EnableEurekaServer:このコメントは、自動設定ユーレカセルヴィエクラスorg.springframework.cloud.netflix.eureka.server.EurekaServerAutoConfigurationの活性化に関連しています
@SpringBootApplication
@EnableEurekaServer
public class Study01Application {
public static void main(String[] args) {
SpringApplication.run(Study01Application.class, args);
}
}
3.プロファイル
spring.application.name=spring-cloud-eureka
server.port=8000
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
-
eureka.client.register-with-eureka
:ユーレカサーバーに自分自身を登録するには、デフォルトがtrueであるかどうかを示します。 -
eureka.client.fetch-registry
:ユーレカサーバーから登録情報を取得するかどうかを示し、デフォルトはtrueです。 -
eureka.client.serviceUrl.defaultZone
:ユーレカサーバーアドレス、追跡および登録サービスとセットの相互作用は、このアドレスに依存する必要があります。デフォルトのHTTP:// localhostを:8761 /ユーレカ、複数のアドレスを分離し、使用することができます。
プロジェクトを開始した後、訪問:HTTP:// localhostを:8000 /を、あなたは以下のページを参照してくださいすることができます
III。クラスタのセットアップ
それは、単一のポイントであるならば、壊滅的で障害が発生した、などの重要なサービスセンターをサインアップしてください。分散システムでは、サービスレジストリは、最も重要な基本的な部分であり、我々は状態でサービスを提供する準備が整いました。その可用性を維持するためには、クラスタを使用することは良い解決策です。ユーレカはお互いに登録することにより、高可用性の展開を達成するために、私たちは唯一の高可用性の展開を実現することができますサーバーの設定、他の利用可能なのserviceURLをEurekeする必要があります。
1. 2ノード登録
(1)コンフィギュレーション・ピア1サービスセンターとして、application-peer1.propertiesを作成し、のserviceURL点ピア2
spring.application.name=spring-cloud-eureka
server.port=8000
eureka.instance.hostname=peer1
eureka.client.serviceUrl.defaultZone=http://peer2:8001/eureka/
(2)構成ピア2サービスセンターとして、application-peer2.propertiesを作成し、のserviceURL点ピア1
spring.application.name=spring-cloud-eureka
server.port=8001
eureka.instance.hostname=peer2
eureka.client.serviceUrl.defaultZone=http://peer2:8000/eureka/
(3)启动服务加载不同配置文件
依次启动完成后,浏览器输入:http://localhost:8000/
效果图如下:
根据图可以看出peer1的注册中心DS Replicas已经有了peer2的相关配置信息,并且出现在available-replicas中。我们手动停止peer2来观察,发现peer2就会移动到unavailable-replicas一栏中,表示peer2不可用。
2.多节点注册
在生产中我们可能需要三台或者大于三台的注册中心来保证服务的稳定性,配置的原理其实都一样,将注册中心分别指向其它的注册中心。这里只介绍三台集群的配置情况,其实和双节点的注册中心类似,每台注册中心分别又指向其它两个节点即可,使用application.yml来配置。
---
spring:
application:
name: spring-cloud-eureka
profiles: peer1
server:
port: 8000
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:8001/eureka/,http://peer3:8002/eureka/
---
spring:
application:
name: spring-cloud-eureka
profiles: peer2
server:
port: 8001
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer3:8002/eureka/
---
spring:
application:
name: spring-cloud-eureka
profiles: peer3
server:
port: 8002
eureka:
instance:
hostname: peer3
client:
serviceUrl:
defaultZone: http://peer1:8000/eureka/,http://peer2:8001/eureka/
分别以peer1、peer2、peer3的配置参数启动eureka注册中心。
依次启动完成后,浏览器输入:http://localhost:8000/
效果图如下:
可以在peer1中看到了peer2、peer3的相关信息。至此eureka集群也已经完成了。