一、場景
假如我們的服務(wù)提供者user-service部署了多個(gè)實(shí)例,如圖
思考幾個(gè)問題:
-
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)和作用
這些問題都需要利用SpringCloud中的注冊中心來解決,其中最廣為人知的注冊中心就是Eureka,其結(jié)構(gòu)如下:
回答之前的各個(gè)問題。
問題1:order-service如何得知user-service實(shí)例地址?
獲取地址信息的流程如下:
-
user-service服務(wù)實(shí)例啟動(dòng)后,將自己的信息注冊到eureka-server(Eureka服務(wù)端)。這個(gè)叫服務(wù)注冊
-
eureka-server保存服務(wù)名稱到服務(wù)實(shí)例地址列表的映射關(guān)系
-
order-service根據(jù)服務(wù)名稱,拉取實(shí)例地址列表。這個(gè)叫服務(wù)發(fā)現(xiàn)或服務(wù)拉取
?
問題2:order-service如何從多個(gè)user-service實(shí)例中選擇具體的實(shí)例?
-
order-service從實(shí)例列表中利用負(fù)載均衡算法選中一個(gè)實(shí)例地址
-
向該實(shí)例地址發(fā)起遠(yuǎn)程調(diào)用
?
問題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),稱為心跳
-
當(dāng)超過一定時(shí)間沒有發(fā)送心跳時(shí),eureka-server會(huì)認(rèn)為微服務(wù)實(shí)例故障,將該實(shí)例從服務(wù)列表中剔除
-
order-service拉取服務(wù)時(shí),就能將故障實(shí)例排除了文章來源:http://www.zghlxwxcb.cn/news/detail-423576.html
注意:文章來源地址http://www.zghlxwxcb.cn/news/detail-423576.html
到了這里,關(guān)于SpringCloud --- Eureka注冊中心的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!