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)
接口也都可以使用。

我們可以停掉其中一個節點:8773,再去看下EurekaServer.
SpringCloud之Netflix服務發現(Eureka)
我們發現eurekaserver上8773的product-service顯示DOWN的紅色字體,說明它是可以檢查到服務的狀態的,我們在此啓動,你會發現down消失了。

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章