1. 程式人生 > >SpringCloud之Netflix服務發現(Eureka)

SpringCloud之Netflix服務發現(Eureka)

前言

隨著服務化程式設計思想的不斷流行,越來越多的公司、企業、開發人員使用微服務技術。目前流行的兩大微服務技術:dubbo\SpringCloud。這篇文章不會去對dubbo和SpringCloud進行對比,這篇文章我主要想介紹SpringCloud全家桶中的netflix元件,結合實際案例程式碼進行說明。也對我工作中使用SpringCloud進行總結。

NetFlix

netflix是收費視訊網站公司的名字,全球十大視訊網站之一,如果想了解的可自行Google。Spring Cloud Netflix是SpringCloud中的一個元件庫,Spring Cloud Netflix通過自動配置和繫結到Spring環境和其他Spring程式設計模型習慣用法,為Spring Boot應用程式提供Netflix OSS整合。通過一些簡單的註解,可以快速啟用和配置應用程式內的常見模式,Netflix元件構建大型分散式系統。提供包括服務發現(Eureka)、熔斷器(Hystrix)、智慧路由(Zuul)和客戶端負載均衡器(Ribbon)。

服務發現(Eureka)

服務發現(Eureka)是netflix的核心元件,它負責服務註冊,管理服務列表。下面這幅圖解釋Eureka的職責:
SpringCloud之Netflix服務發現(Eureka)
所有服務都需要在Eureka-Server上進行註冊登記,訂單服務、產品服務、支付服務、使用者服務都是Eureka管理的服務,需要它們進行上報,上報的資訊包括ServiceId,節點地址,服務介面等,那麼註冊中心就會通過心跳檢查去維護這份服務列表。接下來我們編寫一個Eureka-Server、Product-Service模擬這種服務發現。

開發環境與工具:IDEA+JDK8+SpringBoot2.1.0
SpringCloud之Netflix服務發現(Eureka)
SpringCloud之Netflix服務發現(Eureka)
SpringCloud之Netflix服務發現(Eureka)
到這裡就把專案建立起來了,但這個時候還只是一個SpringBoot的專案,需要開啟EurekaServer註解。
SpringCloud之Netflix服務發現(Eureka)


同時我們把application.yml配置一下:
SpringCloud之Netflix服務發現(Eureka)
我們啟動該專案,用瀏覽器開啟管理臺。
SpringCloud之Netflix服務發現(Eureka)
到這裡,我們就已經把EurekaServer寫完了,那麼我們接下來就是寫Product-Service.
在寫之前我們先定一下提供的介面,list介面提供所以產品資訊,find介面根據id查詢商品資訊。Product-Service,我們按照常規的模式進行編寫分Controller、Service、Domain,過程如下:
SpringCloud之Netflix服務發現(Eureka)
SpringCloud之Netflix服務發現(Eureka)
SpringCloud之Netflix服務發現(Eureka)
SpringCloud之Netflix服務發現(Eureka)
商品domain類,包括id,名稱,價格,庫存。
SpringCloud之Netflix服務發現(Eureka)
SpringCloud之Netflix服務發現(Eureka)
到這裡就已經寫完了Product-Service.我們還需要配置application.yml,讓這個服務自動註冊到Eureka-Server去。
SpringCloud之Netflix服務發現(Eureka)

我們啟動該Product-service。我們一共啟動Product-Service的三個例項8771\8772\8773,然後我們進入到Eureka-Server檢視。
SpringCloud之Netflix服務發現(Eureka)
這個時候我們就看到,Product-Service服務已經自動註冊到這裡來了,一共有三個節點,埠分別是8771,8772,8773.
SpringCloud之Netflix服務發現(Eureka)
介面也都可以使用。

備註:@EnableEurekaClient這個註解可以不用寫的,因為我們SPRING INITIALIZR構建的專案IDE已經幫我們做好了很多工作,映入spring-cloud-starter-netflix-eureka-client,它就會自動去檢查application.yml,我們在配置檔案中已經配置了Eureka客戶端相應的資訊,那麼這個應用就自動加上了@EnableEurekaClient。