Eureka是Netflix開發的服務發現組件,自己是一個基於REST的服務。Spring Cloud將它集成在其子項目spring-cloud-netflix中,以實現Spring Cloud的服務發現功能。目前Eureka 項目至關活躍,代碼更新至關頻繁,目前最新的版本是1.9.8。Eureka 2.0也在緊鑼密鼓地開發中,2.0將會帶來更強的功能和更好的擴展性,可是因爲尚未Release,故而不做討論。git
本文講解的Spring Cloud Camden SR1所使用的Eureka版本是1.4.11,仍是比較新的。同時有了Eureka 1.x的基礎,將來上手Eureka 2.x也會比較容易。github
Eureka的Github:https://github.com/Netflix/Eurekaspring
Eureka的官方文檔對regin、zone幾乎沒有說起,因爲概念抽象,新手很難理解。所以,在分析Eureka原理以前,咱們先來了解一下region、zone、Eureka集羣三者的關係,如圖4-2。緩存
圖4-2 region、zone、Eureka集羣之間的關係網絡
region和zone(或者Availability Zone)均是AWS的概念。在非AWS環境下,咱們能夠簡單地將region理解爲Eureka集羣,zone理解成機房。這樣圖4-2就很好理解了——一個Eureka集羣被部署在了zone1機房和zone2機房中。架構
對region和zone感興趣的讀者可前往http://blog.csdn.net/awschina/article/details/17639191 擴展閱讀。Spring Cloud中默認的region是us-east-1
。微服務
圖4-3 Eureka架構圖spa
圖4-3是來自Eureka官方的架構圖,大體描述了Eureka集羣的工做過程。圖中包含的組件很是多,可能比較難以理解,咱們用通俗易懂的語言解釋一下:.net
由圖可知,Eureka包含兩個組件:Eureka Server 和 Eureka Client,它們的做用以下:code
綜上,Eureka經過心跳檢測、健康檢查和客戶端緩存等機制,提升了系統的靈活性、可伸縮性和可用性。