スプリングクラウドのサービス登録と発見(Eureka)
Eurekaを使ってサービス治理を実現します。
役割:サービス治理(サービス登録と発見)の実現
Spring Cloud EurekaはSpring Cloud Netflixプロジェクト下のサービス整備モジュールです。Spring Cloud NetflixプロジェクトはSpring Cloudのサブプロジェクトの一つであり、主な内容はNetflixの一連のオープンソース製品の包装であり、Spring Bootアプリケーションのための設定されたNetflix OSS統合を提供しています。いくつかの簡単な注釈によって、開発者は迅速に応用モジュールを配置し、巨大な分散システムを構築することができます。主に提供されるモジュールは、サービス発見、ブレーカ(Hystrix)、インテリジェントルーティング(Zuul)、クライアント負荷バランス(Ribbon)などがあります。
プロジェクトの実戦:
サービス登録センター:eurka-server
役割:サービス登録センターはサービス登録機能を提供します。
サービス提供者:eurka-client
役割:登録サービスはサービス登録センターに行きます。
サービス登録センター:eurka-server
新しいspringboot項目:eurka-server、そのpom.xmlの構成は以下の通りです。
サービス提供者:eurka-client
各インスタンスが登録された後、登録センターにときめきを送信する必要があります。Cientがserverに登録すると、ホストとポート、URL、ホームページなどのメタデータが提供されます。Eureka serverは、各clientインスタンスから心拍メッセージを受信する。ときめきがタイムアウトした場合、このインスタンスは通常登録serverから削除される。
新しいsprigboot項目:eurka-clientのpom.xmlの構成は以下の通りです。
eurca.client.serviceUrl.defaultZone属性対応サービス登録センターの配置内容は、サービス登録センターの位置を指定します。
server.port属性を使用して異なるポートを設定します。
EurekaClientAplicationクラスを起動します。
更新http://localhost:9001/サービス提供者はすでにサービス登録センターに登録されているのが見えます。
新しいDiscoveryControllerで
discoveryClievent.get Services()を使って登録されたサービス名を取得し、@valueを使ってプロファイルの情報をipに割り当てます。
最後に、@EnbleEurekaClientと@EnbleDiscoveryClientの二つの注釈を説明します。
まず、この二つの注釈はサービス発見の機能を実現することができます。spring cloudでdiscovery serviceは多くの種類の実現があります。
@EnbaleEurekaClientはspring-cloud-netflixに基づいています。サービスはeurekaを登録センターとして採用しています。使用シーンは単一です。
@EnbleDisccoveryClientはspring-cloud-comonsに基づいています。サービスは他の登録センターを採用しています。
GitHub:https://github.com/mingyuHub/springcloud
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
役割:サービス治理(サービス登録と発見)の実現
Spring Cloud EurekaはSpring Cloud Netflixプロジェクト下のサービス整備モジュールです。Spring Cloud NetflixプロジェクトはSpring Cloudのサブプロジェクトの一つであり、主な内容はNetflixの一連のオープンソース製品の包装であり、Spring Bootアプリケーションのための設定されたNetflix OSS統合を提供しています。いくつかの簡単な注釈によって、開発者は迅速に応用モジュールを配置し、巨大な分散システムを構築することができます。主に提供されるモジュールは、サービス発見、ブレーカ(Hystrix)、インテリジェントルーティング(Zuul)、クライアント負荷バランス(Ribbon)などがあります。
プロジェクトの実戦:
サービス登録センター:eurka-server
役割:サービス登録センターはサービス登録機能を提供します。
サービス提供者:eurka-client
役割:登録サービスはサービス登録センターに行きます。
サービス登録センター:eurka-server
新しいspringboot項目:eurka-server、そのpom.xmlの構成は以下の通りです。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
サービス登録センターの機能を実現するには非常に簡単です。プロジェクトの起動タイプEurekaServer Aplicationに@EnbaleEurekaServerを使って注解すればいいです。
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication{
public static void main(String[] args) {
new SpringApplicationBuilder(EurekaServerApplication.class)
.web(true).run(args);
}
}
デフォルトでは、このサービス登録センターも自分をクライアントとして登録しようとしますので、クライアントの登録行為を無効にする必要があります。appication.properties設定ファイルに以下のような情報を追加する必要があります。
spring.application.name=eureka-server
server.port=1001
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
EurekaServerAplicationを起動して、アクセスします。http://localhost:9001/Eurekaのページが見られます。赤いボックスの位置からは、タスクサービスのインスタンスなしで現在のサービス登録センターに登録されています。サービス提供者:eurka-client
各インスタンスが登録された後、登録センターにときめきを送信する必要があります。Cientがserverに登録すると、ホストとポート、URL、ホームページなどのメタデータが提供されます。Eureka serverは、各clientインスタンスから心拍メッセージを受信する。ときめきがタイムアウトした場合、このインスタンスは通常登録serverから削除される。
新しいsprigboot項目:eurka-clientのpom.xmlの構成は以下の通りです。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
サービス提供者を実現するのも簡単です。プロジェクトのスタートクラスEurekaClientAplicationで@EnbaleEurekaClientコメントを使えばいいです。
@EnableEurekaClient
@SpringBootApplication
public class EurekaClientApplication {
public static void main(String[] args) {
new SpringApplicationBuilder(
EurekaClientApplication.class)
.web(true).run(args);
}
}
appication.propertiesでは、以下のように構成されています。
spring.application.name=eureka-client
server.port=9002
eureka.client.serviceUrl.defaultZone=http://localhost:9001/eureka/
spring.appication.name属性を通じて、私たちはマイクロサービスの名前を指定して、呼び出し時にこの名前を使うだけでサービスへのアクセスができます。eurca.client.serviceUrl.defaultZone属性対応サービス登録センターの配置内容は、サービス登録センターの位置を指定します。
server.port属性を使用して異なるポートを設定します。
EurekaClientAplicationクラスを起動します。
更新http://localhost:9001/サービス提供者はすでにサービス登録センターに登録されているのが見えます。
新しいDiscoveryControllerで
discoveryClievent.get Services()を使って登録されたサービス名を取得し、@valueを使ってプロファイルの情報をipに割り当てます。
@RestController
public class DiscoveryController {
@Autowired
private DiscoveryClient discoveryClient;
@Value("${server.port}")
private String ip;
@GetMapping("/client")
public String client() {
String services = "Services: " + discoveryClient.getServices()+" ip :"+ip;
System.out.println(services);
return services;
}
}
アクセス:http://localhost:9002/client最後に、@EnbleEurekaClientと@EnbleDiscoveryClientの二つの注釈を説明します。
まず、この二つの注釈はサービス発見の機能を実現することができます。spring cloudでdiscovery serviceは多くの種類の実現があります。
@EnbaleEurekaClientはspring-cloud-netflixに基づいています。サービスはeurekaを登録センターとして採用しています。使用シーンは単一です。
@EnbleDisccoveryClientはspring-cloud-comonsに基づいています。サービスは他の登録センターを採用しています。
GitHub:https://github.com/mingyuHub/springcloud
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。