一、注冊(cè)中心的說明
一 Eureka服務(wù)治理體系
1.1 服務(wù)治理
服務(wù)治理是微服務(wù)架構(gòu)中最為核心和基礎(chǔ)的模塊,它主要用來實(shí)現(xiàn)各個(gè)微服務(wù)實(shí)例的自動(dòng)化注冊(cè)和發(fā)現(xiàn)。
Spring Cloud Eureka是Spring Cloud Netflix微服務(wù)套件中的一部分,它基于Netflix Eureka做了二次封裝。主要負(fù)責(zé)完成微服務(wù)架構(gòu)中的服務(wù)治理功能。
Eureka服務(wù)治理體系如下:

1.2 服務(wù)注冊(cè)
在服務(wù)治理框架中,通常都會(huì)構(gòu)建一個(gè)注冊(cè)中心,每個(gè)服務(wù)單元向注冊(cè)中心登記自己提供的服務(wù),包括服務(wù)的主機(jī)與端口號(hào)、服務(wù)版本號(hào)、通訊協(xié)議等一些附加信息。注冊(cè)中心按照服務(wù)名分類組織服務(wù)清單,同時(shí)還需要以心跳檢測(cè)的方式去監(jiān)測(cè)清單中的服務(wù)是否可用,若不可用需要從服務(wù)清單中剔除,以達(dá)到排除故障服務(wù)的效果。
1.3 服務(wù)發(fā)現(xiàn)
在服務(wù)治理框架下,服務(wù)間的調(diào)用不再通過指定具體的實(shí)例地址來實(shí)現(xiàn),而是通過服務(wù)名發(fā)起請(qǐng)求調(diào)用實(shí)現(xiàn)。服務(wù)調(diào)用方通過服務(wù)名從服務(wù)注冊(cè)中心的服務(wù)清單中獲取服務(wù)實(shí)例的列表清單,通過指定的負(fù)載均衡策略取出一個(gè)服務(wù)實(shí)例位置來進(jìn)行服務(wù)調(diào)用。
二 Netflix Eureka
2.1 Netflix Eureka介紹
Spirng Cloud Eureka使用Netflix Eureka來實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)。它既包含了服務(wù)端組件,也包含了客戶端組件,并且服務(wù)端與客戶端均采用java編寫,所以Eureka主要適用于通過java實(shí)現(xiàn)的分布式系統(tǒng),或是JVM兼容語言構(gòu)建的系統(tǒng)。Eureka的服務(wù)端提供了較為完善的REST API,所以Eureka也支持將非java語言實(shí)現(xiàn)的服務(wù)納入到Eureka服務(wù)治理體系中來,只需要其他語言平臺(tái)自己實(shí)現(xiàn)Eureka的客戶端程序。目前.Net平臺(tái)的Steeltoe、Node.js的eureka-js-client等都已經(jīng)實(shí)現(xiàn)了各自平臺(tái)的Ereka客戶端組件。
2.2 Eureka服務(wù)端
Eureka服務(wù)端,即服務(wù)注冊(cè)中心。它同其他服務(wù)注冊(cè)中心一樣,支持高可用配置。依托于強(qiáng)一致性提供良好的服務(wù)實(shí)例可用性,可以應(yīng)對(duì)多種不同的故障場(chǎng)景。
Eureka服務(wù)端支持集群模式部署,當(dāng)集群中有分片發(fā)生故障的時(shí)候,Eureka會(huì)自動(dòng)轉(zhuǎn)入自我保護(hù)模式。它允許在分片發(fā)生故障的時(shí)候繼續(xù)提供服務(wù)的發(fā)現(xiàn)和注冊(cè),當(dāng)故障分配恢復(fù)時(shí),集群中的其他分片會(huì)把他們的狀態(tài)再次同步回來。集群中的的不同服務(wù)注冊(cè)中心通過異步模式互相復(fù)制各自的狀態(tài),這也意味著在給定的時(shí)間點(diǎn)每個(gè)實(shí)例關(guān)于所有服務(wù)的狀態(tài)可能存在不一致的現(xiàn)象。
2.3 Eureka客戶端
Eureka客戶端,主要處理服務(wù)的注冊(cè)和發(fā)現(xiàn)。客戶端服務(wù)通過注冊(cè)和參數(shù)配置的方式,嵌入在客戶端應(yīng)用程序的代碼中。在應(yīng)用程序啟動(dòng)時(shí),Eureka客戶端向服務(wù)注冊(cè)中心注冊(cè)自身提供的服務(wù),并周期性的發(fā)送心跳來更新它的服務(wù)租約。同時(shí),他也能從服務(wù)端查詢當(dāng)前注冊(cè)的服務(wù)信息并把它們緩存到本地并周期行的刷新服務(wù)狀態(tài)。
三 服務(wù)注冊(cè)中心
3.1 服務(wù)注冊(cè)中心功能概述
在服務(wù)治理框架中,通常都會(huì)構(gòu)建一個(gè)注冊(cè)中心,每個(gè)服務(wù)單元向注冊(cè)中心登記自己提供的服務(wù),包括服務(wù)的主機(jī)與端口號(hào)、服務(wù)版本號(hào)、通訊協(xié)議等一些附加信息。注冊(cè)中心按照服務(wù)名分類組織服務(wù)清單,同時(shí)還需要以心跳檢測(cè)的方式去監(jiān)測(cè)清單中的服務(wù)是否可用,若不可用需要從服務(wù)清單中剔除,以達(dá)到排除故障服務(wù)的效果。