關於Spring Cloud Eureka

醜人發表於2017-11-14

首先,我們來嘗試使用Spring Cloud Eureka來實現服務治理。
Spring Cloud Eureka是Spring Cloud Netflix專案下的服務治理模組。而Spring Cloud Netflix專案是Spring Cloud的子專案之一,主要內容是對Netflix公司一系列開源產品的包裝,它為Spring Boot應用提供了自配置的Netflix OSS整合。通過一些簡單的註解,開發者就可以快速的在應用中配置一下常用模組並構建龐大的分散式系統。它主要提供的模組包括:服務發現(Eureka),斷路器(Hystrix),智慧路由(Zuul),客戶端負載均衡(Ribbon)等。
下面,就來具體看看如何使用Spring Cloud Eureka實現服務治理。

建立“服務註冊中心”

建立一個基礎的Spring Boot工程,命名為eureka-server,並在pom.xml中引入需要的依賴內容:通過@EnableEurekaServer註解啟動一個服務註冊中心提供給其他應用進行對話。這一步非常的簡單,只需要在一個普通的Spring Boot應用中新增這個註解就能開啟此功能,比如下面的例子:
在預設設定下,該服務註冊中心也會將自己作為客戶端來嘗試註冊它自己,所以我們需要禁用它的客戶端註冊行為,只需要在application.properties配置檔案中增加如下資訊:
為了與後續要進行註冊的服務區分,這裡將服務註冊中心的埠通過server.port屬性設定為1001。

建立“服務提供方”

下面我們建立提供服務的客戶端,並向服務註冊中心註冊自己。本文我們主要介紹服務的註冊與發現,所以我們不妨在服務提供方中嘗試著提供一個介面來獲取當前所有的服務資訊。
首先,建立一個基本的Spring Boot應用。命名為eureka-client,在pom.xml中,加入如下配置:
其次,實現/dc請求處理介面,通過DiscoveryClient物件,在日誌中列印出服務例項的相關內容。
最後在應用主類中通過加上@EnableDiscoveryClient註解,該註解能啟用Eureka中的DiscoveryClient實現,這樣才能實現Controller中對服務資訊的輸出。
[table=100%,#ffffff,,1,middle][tr][td] 通過spring.application.name屬性,我們可以指定微服務的名稱後續在呼叫的時候只需要使用該名稱就可以進行服務的訪問。eureka.client.serviceUrl.defaultZone屬性對應服務註冊中心的配置內容,指定服務註冊中心的位置。為了在本機上測試區分服務提供方和服務註冊中心,使用server.port屬性設定不同的埠。[/td][td]
[/td][/tr][/table]
當然,我們也可以通過直接訪問eureka-client服務提供的/dc介面來獲取當前的服務清單
其中,方括號中的eureka-client就是通過Spring Cloud定義的DiscoveryClient介面在eureka的實現中獲取到的所有服務清單。由於Spring Cloud在服務發現這一層做了非常好的抽象,所以,對於上面的程式,我們可以無縫的從eureka的服務治理體系切換到consul的服務治理體系中區。


從現在開始,我這邊會將近期研發的springcloud微服務雲架構的搭建過程和精髓記錄下來,幫助更多有興趣研發spring cloud框架的朋友,希望可以幫助更多的好學者。大家來一起探討spring cloud架構的搭建過程及如何運用於企業專案。
原始碼來源:minglisoft.cn/honghu/tech…

相關文章