Eureka-eureka原理分析
Eureka注冊(cè)中心
假如我們的服務(wù)提供者user-service部署了多個(gè)實(shí)例,如圖:
大家思考幾個(gè)問(wèn)題:
-
order-service在發(fā)起遠(yuǎn)程調(diào)用的時(shí)候,該如何得知user-service實(shí)例的ip地址和端口?
-
有多個(gè)user-service實(shí)例地址,order-service調(diào)用時(shí)該如何選擇?
-
order-service如何得知某個(gè)user-service實(shí)例是否依然健康,是不是已經(jīng)宕機(jī)?
Eureka的結(jié)構(gòu)和作用
這些問(wèn)題都需要利用SpringCloud中的注冊(cè)中心來(lái)解決,其中最廣為人知的注冊(cè)中心就是Eureka,其結(jié)構(gòu)如下:
回答之前的各個(gè)問(wèn)題。
問(wèn)題1:order-service如何得知user-service實(shí)例地址?
獲取地址信息的流程如下:
-
user-service服務(wù)實(shí)例啟動(dòng)后,將自己的信息注冊(cè)到eureka-server(Eureka服務(wù)端)。這個(gè)叫服務(wù)注冊(cè)
-
eureka-server保存服務(wù)名稱(chēng)到服務(wù)實(shí)例地址列表的映射關(guān)系
-
order-service根據(jù)服務(wù)名稱(chēng),拉取實(shí)例地址列表。這個(gè)叫服務(wù)發(fā)現(xiàn)或服務(wù)拉取
問(wèn)題2:order-service如何從多個(gè)user-service實(shí)例中選擇具體的實(shí)例?
-
order-service從實(shí)例列表中利用負(fù)載均衡算法選中一個(gè)實(shí)例地址
-
向該實(shí)例地址發(fā)起遠(yuǎn)程調(diào)用
問(wèn)題3:order-service如何得知某個(gè)user-service實(shí)例是否依然健康,是不是已經(jīng)宕機(jī)?
-
user-service會(huì)每隔一段時(shí)間(默認(rèn)30秒)向eureka-server發(fā)起請(qǐng)求,報(bào)告自己狀態(tài),稱(chēng)為心跳
-
當(dāng)超過(guò)一定時(shí)間沒(méi)有發(fā)送心跳時(shí),eureka-server會(huì)認(rèn)為微服務(wù)實(shí)例故障,將該實(shí)例從服務(wù)列表中剔除
-
order-service拉取服務(wù)時(shí),就能將故障實(shí)例排除了
注意:一個(gè)微服務(wù),既可以是服務(wù)提供者,又可以是服務(wù)消費(fèi)者,因此eureka將服務(wù)注冊(cè)、服務(wù)發(fā)現(xiàn)等功能統(tǒng)一封裝到了eureka-client端
總結(jié)
以上是生活随笔為你收集整理的Eureka-eureka原理分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Eureka-搭建eureka服务
- 下一篇: Gateway网关-网关的cors跨域配