SpringCloud微服務架構開發(fā)實戰(zhàn):實現服務注冊與發(fā)現
實現服務的注冊與發(fā)現
在前面分別用Eureka Server和Eureka Client來搭建了一臺注冊服務器,以及多個Eureka Client客戶端。Eureka Client在啟動后,就會將自己注冊到EurekaServer中,這樣,Eureka Server就能及時感知到注冊上來的Eureka Client,以便其他服務通過應用的名稱來調用這些服務。
在理解了這些原理之后,我們就能非常簡單地通過天氣預報系統(tǒng)來實現服務的注冊和發(fā)現。
原有的天氣預報微服務都需要進行一些微調,成為可以被Eureka Server注冊和發(fā)現的EurekaClient。這樣,最終會形成以下4個新的應用。
.msa-weather-collection-eureka:基于msa-weather-collection-server和Eureka Client實現的天氣數據采集微服務。
.msa-weather-data-eureka:基于msa-weather-data-server和Eureka Client實現的天氣數據API微服務。
.msa-weather-city-eureka:基于msa-weather-city-server和Eureka Client實現的城市數據微服務。
msa-weather-report-eureka:基于msa-weather-report-server和Eureka Client實現的天氣預報采集微服務。

所需環(huán)境
為了演示本例,需要采用如下開發(fā)環(huán)境。
.JDK8。
.Gradle 4.0。
Redis 3.2.100。
. Spring Boot 2.0.0.M3。
.Spring Cloud Starter Netflix Eureka Client Finchley.M2。
更改build.gradle配置
4個新的應用的build.gradle配置的變化,相比于原來的應用而言,主要體現在以下幾點。
springBootVersion變量指定了Spring Boot的版本,這里設定為2.0.0.M3,而非之前的2.0.0.M4.因為最新的Spring Cloud并未對Spring Boot 2.0.0.M4做好兼容。
添加了springCloudVersion變量,用于指定Spring Cloud 的版本。目前,本文中主要用了Finchley.M2版本。
在dependencyManagement(依賴管理)中,我們導入了Spring Cloud的依賴的管理。
最為重要的是,在依賴中,我們添加了Spring Cloud Starter Netflix Eureka Client依賴。
以下是列出的配置點。
/lbuildscript代碼塊中腳本優(yōu)先執(zhí)行
buildscript {
/l ext用于定義動態(tài)屬性
ext {
springBootversion='2.0.0.M3'
}
/l ...
// ...
ext {
springCloudVersion ='Finchley.M2'
}
dependencies {
/l ...
//添加Spring Cloud Starter Netflix Eureka Client依賴
compile('org.springframework.cloud:spring-cloud-starter-netflix-
eureka-client')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:
${springCloudversion}"
}
}
啟用Eureka Client
要啟用Eureka Client,在每個應用的根目錄下Application類中添加注解@EnableDiscoveryClient即可。
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscovery
Client;
★*
*主應用程序.
*
*since 1.0.0 2017年11月01日
*@author "https://waylau.com">Way Lau
*/
@SpringBootApplication
@EnableDiscoveryclient
public class Application{
public static void main(String [l args){
SpringApplication.run(Application.class,args);
}
}修改項目配置
修改application.properties,修改相應的配置。其中:
eureka.client.serviceUrl.defaultZonet:都指向同一個Eureka Server;
.spring.application.name:指定為不同應用的各自的名稱。
以下是
msa-weather-collection-eureka的配置示例。
spring.application.name: msa-weather-collection-eureka
eureka.client.serviceUrl.defaultZone:http://localhost:8761/eureka/其他三個應用的配置類似,spring.application.name分別是msa-weather-data-cureka、msa-weather-city-eureka、msa-weather-report-eureka。
運行和測試
首先運行Eureka Server實例
micro-weather-eureka-server,它啟動在8761端口。
其次要運行Redis服務器。
然后分別在8081和8082上啟動了
msa-weather-collection-eureka實例兩個,在8083和8084上啟動了msa-weather-data-eureka實例兩個,在8085和8086上啟動了msa-weather-city-eureka實例兩個,在8087和8088上啟動了msa-weather-report-eureka實例兩個。啟動腳本如下。
java -jar micro-weather-eureka-server-1.0.0.jar --server.port=8761
java -jar msa-weather-collection-eureka-1.0.0.jar --server.port=8081
java-jar msa-weather-collection-eureka-l.0.0.jar--server.port=8082
java -jar msa-weather-data-eureka-1.0.0.jar --server.port=8083
java-jar msa-weather-data-eureka-1.0.0.jar --server.port=8084
java-jar msa-weather-city-eureka-1.0.0.jar --server.port=8085
java -jar msa-weather-city-eureka-1.0.0.jar--server.port=8086
java -jarmsa-weather-report-eureka-1.0.0.jar --server.port=8087
java -jar msa-weather-report-eureka-1.0.0.jar --server.port=8088這樣,就可以在Eureka Server上看到這8個實例的信息。訪問http://localhost:8761,可以看到如圖8-3所示的Eureka Server自帶的UI管理界面。

從管理界面中可以看到每個Eureka Client的狀態(tài)。如果Eureka Client離線了,Eureka Server也能及時感知到。
其中,從界面上也可以看出,Eureka Server運行的IP為192.168.1.101。
本篇文章內容給大家講解的是實現服務的注冊與發(fā)現
下篇文章給大家講解微服務的消費;
覺得文章不錯的朋友可以轉發(fā)此文關注小編;
感謝大家的支持!
本文就是愿天堂沒有BUG給大家分享的內容,大家有收獲的話可以分享下,想學習更多的話可以到微信公眾號里找我,我等你哦。
