什么是服務(wù)治理?此處可以簡單理解如下:
服務(wù)治理就是提供了微服務(wù)架構(gòu)中各微服務(wù)實(shí)例的快速上線或下線且保持各服務(wù)能正常通信的能力的方案總稱。
服務(wù)治理的優(yōu)點(diǎn):
-
更高的可用性
服務(wù)治理可以支持動態(tài)的服務(wù)實(shí)例集群環(huán)境,任何服務(wù)實(shí)例可以隨時(shí)上線或下線。并且當(dāng)一個(gè)服務(wù)實(shí)例不可用時(shí),治理服務(wù)器可以將請求轉(zhuǎn)給其他服務(wù)提供者,當(dāng)一個(gè)新的服務(wù)實(shí)例上線時(shí),也能夠快速地分擔(dān)服務(wù)調(diào)用請求。
-
負(fù)載均衡
服務(wù)治理可以提供動態(tài)的負(fù)載均衡功能,可以將所有請求動態(tài)地分布到其所管理的所有服務(wù)實(shí)例中進(jìn)行處理。
-
提升應(yīng)用的彈性
服務(wù)治理的客戶端會定時(shí)從服務(wù)治理服務(wù)器中復(fù)制一份服務(wù)實(shí)例信息緩存到本地中,這樣即使當(dāng)服務(wù)治理服務(wù)器不可用時(shí),服務(wù)消費(fèi)者也可以使用本地的緩存去訪問相應(yīng)的服務(wù),而不至于中斷服務(wù)。通過這種機(jī)制,極大地提高了應(yīng)用的彈性。
-
高可用性集群
可以構(gòu)建服務(wù)治理集群,通過互相注冊機(jī)制,將每個(gè)治理服務(wù)器所管轄的服務(wù)信息列表進(jìn)行交換,使服務(wù)治理服務(wù)擁有更高的可用性。
Eureak
Eureak是服務(wù)治理的一種具體解決方案,說明如下:
Eureak是Netflix開源微服務(wù)框架中一系列項(xiàng)目中的一個(gè)。Spring Cloud對其進(jìn)行了二次封裝,形成了Spring Cloud Netflix子項(xiàng)目,但未對Netflix微服務(wù)實(shí)現(xiàn)原理進(jìn)行更改,只是進(jìn)行了Spring Boot化,使開發(fā)者更容易使用和整合。
在Eureka中,對于服務(wù)治理有如下3個(gè)概念:
- 服務(wù)治理服務(wù)器(
Eureka服務(wù)器):服務(wù)注冊中心,負(fù)責(zé)服務(wù)列表的注冊、維護(hù)和查詢等功能,也就是Eureka服務(wù)器。 - 服務(wù)注冊代理(服務(wù)提供者):如果一個(gè)微服務(wù)是一個(gè)服務(wù)提供者,那么可以通過服務(wù)注冊代理將服務(wù)配置信息注冊到治理服務(wù)器上。服務(wù)注冊代理可以理解為一個(gè)
Eureka客戶端,負(fù)責(zé)將微服務(wù)所提供的服務(wù)向Eureka服務(wù)器執(zhí)行注冊、續(xù)約和注銷等操作,以使服務(wù)消費(fèi)者可以發(fā)現(xiàn)并進(jìn)行消費(fèi)。在服務(wù)注冊時(shí)需要向服務(wù)治理服務(wù)器提供服務(wù)名稱、宿主服務(wù)器IP地址、服務(wù)端口號、域名等主要數(shù)據(jù)。 - 服務(wù)發(fā)現(xiàn)客戶端(服務(wù)消費(fèi)者):也是一個(gè)
Eureka客戶端。它在啟動時(shí)會默認(rèn)從所服務(wù)治理服務(wù)器中獲取所有的服務(wù)注冊表信息,通過所獲取到的服務(wù)注冊列表信息來消費(fèi)相應(yīng)的服務(wù)。