1.Eureka簡(jiǎn)介及原理
Eureka是Netflix開(kāi)發(fā)的服務(wù)發(fā)現(xiàn)組件国裳,本身是一個(gè)基于REST的服務(wù)形入。Spring Cloud將它集成在其子項(xiàng)目spring-cloud-netflix中,以實(shí)現(xiàn)Spring Cloud的服務(wù)發(fā)現(xiàn)功能缝左。目前Eureka 項(xiàng)目相當(dāng)活躍亿遂,代碼更新相當(dāng)頻繁,目前最新的版本是1.5.5渺杉。Eureka 2.0也在緊鑼密鼓地開(kāi)發(fā)中蛇数,2.0將會(huì)帶來(lái)更強(qiáng)的功能和更好的擴(kuò)展性,但是由于還沒(méi)有Release是越,故而不作討論耳舅。
本文講解的Spring Cloud Camden SR1所使用的Eureka版本是1.4.11,還是比較新的倚评。同時(shí)有了Eureka 1.x的基礎(chǔ)浦徊,未來(lái)上手Eureka 2.x也會(huì)比較容易。
Eureka的Github:https://github.com/Netflix/Eureka
Region天梧、Zone解析
Eureka的官方文檔對(duì)regin盔性、zone幾乎沒(méi)有提及,由于概念抽象呢岗,新手很難理解冕香。因此,在分析Eureka原理之前后豫,我們先來(lái)了解一下region悉尾、zone、Eureka集群三者的關(guān)系挫酿,如圖4-2焕襟。
圖4-2 region、zone饭豹、Eureka集群之間的關(guān)系region和zone(或者Availability Zone)均是AWS的概念鸵赖。在非AWS環(huán)境下,我們可以簡(jiǎn)單地將region理解為Eureka集群拄衰,zone理解成機(jī)房它褪。這樣圖4-2就很好理解了——一個(gè)Eureka集群被部署在了zone1機(jī)房和zone2機(jī)房中。
對(duì)region和zone感興趣的讀者可前往http://blog.csdn.net/awschina/article/details/17639191
擴(kuò)展閱讀翘悉。Spring Cloud中默認(rèn)的region是us-east-1
茫打。
Eureka架構(gòu)
圖4-3 Eureka架構(gòu)圖
圖4-3是來(lái)自Eureka官方的架構(gòu)圖,大致描述了Eureka集群的工作過(guò)程妖混。圖中包含的組件非常多老赤,可能比較難以理解,我們用通俗易懂的語(yǔ)言解釋一下:
- Application Service 相當(dāng)于本書(shū)中的服務(wù)提供者制市,Application Client相當(dāng)于本書(shū)中的服務(wù)消費(fèi)者抬旺;
- Make Remote Call,可以簡(jiǎn)單理解為調(diào)用RESTful API祥楣;
- us-east-1c开财、us-east-1d等都是zone,它們都屬于us-east-1這個(gè)region误褪;
由圖可知责鳍,Eureka包含兩個(gè)組件:Eureka Server 和 Eureka Client,它們的作用如下:
Eureka Client是一個(gè)Java客戶端兽间,用于簡(jiǎn)化與Eureka Server的交互历葛;
Eureka Server提供服務(wù)發(fā)現(xiàn)的能力,各個(gè)微服務(wù)啟動(dòng)時(shí)嘀略,會(huì)通過(guò)Eureka Client向Eureka Server進(jìn)行注冊(cè)自己的信息(例如網(wǎng)絡(luò)信息)恤溶,Eureka Server會(huì)存儲(chǔ)該服務(wù)的信息;
微服務(wù)啟動(dòng)后屎鳍,會(huì)周期性地向Eureka Server發(fā)送心跳(默認(rèn)周期為30秒)以續(xù)約自己的信息宏娄。如果Eureka Server在一定時(shí)間內(nèi)沒(méi)有接收到某個(gè)微服務(wù)節(jié)點(diǎn)的心跳,Eureka Server將會(huì)注銷(xiāo)該微服務(wù)節(jié)點(diǎn)(默認(rèn)90秒)逮壁;
每個(gè)Eureka Server同時(shí)也是Eureka Client孵坚,多個(gè)Eureka Server之間通過(guò)復(fù)制的方式完成服務(wù)注冊(cè)表的同步;
Eureka Client會(huì)緩存Eureka Server中的信息窥淆。即使所有的Eureka Server節(jié)點(diǎn)都宕掉卖宠,服務(wù)消費(fèi)者依然可以使用緩存中的信息找到服務(wù)提供者。
綜上忧饭,Eureka通過(guò)心跳檢測(cè)扛伍、健康檢查和客戶端緩存等機(jī)制,提高了系統(tǒng)的靈活性词裤、可伸縮性和可用性刺洒。