當(dāng)調(diào)用API或者發(fā)起網(wǎng)絡(luò)通信的時(shí)候慕爬,無(wú)論如何我們都要知道被調(diào)用方的IP和服務(wù)端口畅铭,大部分情況是通過(guò)域名和服務(wù)端口淡溯,事實(shí)上基于DNS的服務(wù)發(fā)現(xiàn),因?yàn)镈NS緩存拒逮、無(wú)法自治和其他不利因素的存在罐氨,有很多局限。傳統(tǒng)的DNS方式滩援,都是通過(guò)nginx或者其他代理軟件來(lái)實(shí)現(xiàn)栅隐,物理機(jī)器的ip和port都是固定的,那么nginx中配置的服務(wù)ip和port也是固定的狠怨,服務(wù)列表的更新只能通過(guò)手動(dòng)來(lái)做约啊,但如果后端服務(wù)很多時(shí),手動(dòng)更新容易出錯(cuò)佣赖,效率也很低恰矩,這在后端服務(wù)發(fā)生故障時(shí),不可用時(shí)間就可能會(huì)加長(zhǎng)憎蛤。在微服務(wù)中外傅,尤其是使用了Docker等虛擬化技術(shù)的微服務(wù),其IP和port都是動(dòng)態(tài)分配的俩檬,服務(wù)實(shí)例數(shù)也是動(dòng)態(tài)變化的萎胰,那么就需要精細(xì)而準(zhǔn)確的服務(wù)發(fā)現(xiàn)機(jī)制。當(dāng)微服務(wù)app啟動(dòng)后棚辽,告訴其他服務(wù)自己的ip和端口技竟,這里的其他服務(wù)就是Eureka Server和Eureka Client,這樣其他服務(wù)就知道這個(gè)服務(wù)有多少實(shí)例在線屈藐,都在哪些地方榔组,方便去負(fù)載均衡和調(diào)用。
Eureka屬于客戶端發(fā)現(xiàn)模式联逻,客戶端負(fù)責(zé)決定相應(yīng)服務(wù)實(shí)例的網(wǎng)絡(luò)位置搓扯,并且對(duì)請(qǐng)求實(shí)現(xiàn)負(fù)載均衡“椋客戶端從一個(gè)服務(wù)注冊(cè)服務(wù)中查詢所有可用服務(wù)實(shí)例的庫(kù)锨推,并緩存到本地。服務(wù)調(diào)用時(shí),客戶端使用負(fù)載均衡算法從多個(gè)后端服務(wù)實(shí)例中選擇出一個(gè)换可,然后發(fā)出請(qǐng)求椎椰。Eureka分為Eureka Server和Eureka client, Eureka Server是一個(gè)服務(wù)注冊(cè)中心沾鳄,為服務(wù)實(shí)例注冊(cè)管理和查詢可用實(shí)例提供了REST API俭识,并可以用其定位、負(fù)載均衡洞渔、故障恢復(fù)后端服務(wù)的中間層服務(wù)。在服務(wù)啟動(dòng)后缚态,Eureka Client向服務(wù)注冊(cè)中心注冊(cè)服務(wù)同時(shí)會(huì)拉去注冊(cè)中心注冊(cè)表副本磁椒;在服務(wù)停止的時(shí)候,Eureka Client向服務(wù)注冊(cè)中心注銷服務(wù)玫芦;服務(wù)注冊(cè)后浆熔,Eureka Client會(huì)定時(shí)的發(fā)送心跳來(lái)刷新服務(wù)的最新狀態(tài)。
客戶端發(fā)現(xiàn)模式的優(yōu)點(diǎn)是服務(wù)調(diào)用桥帆、負(fù)載均衡不需要和Eureka Server通信医增,直接使用本地注冊(cè)表副本,因此Eureka Server不可用時(shí)是不會(huì)影響正常的服務(wù)調(diào)用老虫,性能也不會(huì)因?yàn)榫W(wǎng)絡(luò)延遲和服務(wù)端延遲受到影響叶骨。但其缺點(diǎn)也很明顯,但某個(gè)服務(wù)不可用時(shí)祈匙,各個(gè)Eureka Client不能及時(shí)的知道忽刽,需要1~3個(gè)心跳周期才能感知,但是夺欲,由于基于Netflix的服務(wù)調(diào)用端都會(huì)使用Hystrix來(lái)容錯(cuò)和降級(jí)跪帝,當(dāng)服務(wù)調(diào)用不可用時(shí)Hystrix也能及時(shí)感知到,通過(guò)熔斷機(jī)制來(lái)降級(jí)服務(wù)調(diào)用些阅,因此彌補(bǔ)了基于客戶端服務(wù)發(fā)現(xiàn)的時(shí)效性的缺點(diǎn)伞剑。
Eureka Server采用的是對(duì)等通信(P2P),無(wú)中心化的架構(gòu),無(wú)master/slave區(qū)分市埋,每一個(gè)server都是對(duì)等的黎泣,既是Server又是Client,所以其集群方式可以自由發(fā)揮,可以各點(diǎn)互連腰素,也可以接力互連聘裁。Eureka Server通過(guò)運(yùn)行多個(gè)實(shí)例以及彼此之間互相注冊(cè)來(lái)提高可用性,每個(gè)節(jié)點(diǎn)需要添加一個(gè)或多個(gè)有效的serviceUrl指向另一個(gè)節(jié)點(diǎn)弓千。利用Eureka Server這種架構(gòu)特性衡便, 我在Eureka Server Cluster的部署時(shí)采用了三角形通信模型,三角形是一個(gè)很好的均衡模型,既是各點(diǎn)互連镣陕,又是接力互連谴餐,三角形本身就是一個(gè)穩(wěn)定性幾何形狀,有著穩(wěn)固呆抑、堅(jiān)定搜索岂嗓、耐壓的特點(diǎn),家具鹊碍、建筑厌殉、交通等各種行業(yè)都有應(yīng)用。如下圖所示侈咕,Eureka Cluster的每個(gè)實(shí)例都和另外2個(gè)實(shí)例通信交互公罕。
微服務(wù)之Eureka服務(wù)發(fā)現(xiàn)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)转晰,“玉大人芦拿,你說(shuō)我怎么就攤上這事〔樾希” “怎么了蔗崎?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扰藕。 經(jīng)常有香客問(wèn)我缓苛,道長(zhǎng),這世上最難降的妖魔是什么邓深? 我笑而不...
- 正文 為了忘掉前任未桥,我火速辦了婚禮,結(jié)果婚禮上芥备,老公的妹妹穿的比我還像新娘冬耿。我一直安慰自己,他們只是感情好萌壳,可當(dāng)我...
- 文/花漫 我一把揭開白布亦镶。 她就那樣靜靜地躺著日月,像睡著了一般。 火紅的嫁衣襯著肌膚如雪缤骨。 梳的紋絲不亂的頭發(fā)上爱咬,一...
- 那天,我揣著相機(jī)與錄音绊起,去河邊找鬼精拟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛虱歪,可吹牛的內(nèi)容都是我干的蜂绎。 我是一名探鬼主播,決...
- 文/蒼蘭香墨 我猛地睜開眼笋鄙,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荡碾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起局装,我...
- 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劳殖,沒(méi)想到半個(gè)月后铐尚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡哆姻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年宣增,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矛缨。...
- 正文 年R本政府宣布落竹,位于F島的核電站泌霍,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏述召。R本人自食惡果不足惜朱转,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望积暖。 院中可真熱鬧藤为,春花似錦、人聲如沸夺刑。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至窿吩,卻和暖如春茎杂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背纫雁。 一陣腳步聲響...
- 正文 我出身青樓刽脖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親忌愚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曲管,可洞房花燭夜當(dāng)晚...
推薦閱讀更多精彩內(nèi)容
- Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)硕糊,斷路器院水,智...
- 當(dāng)調(diào)用API或者發(fā)起網(wǎng)絡(luò)通信的時(shí)候,無(wú)論如何我們都要知道被調(diào)用方的IP和服務(wù)端口简十,大部分情況是通過(guò)域名和服務(wù)端口檬某,...
- 1 為什么需要服務(wù)發(fā)現(xiàn) 簡(jiǎn)單來(lái)說(shuō),服務(wù)化的核心就是將傳統(tǒng)的一站式應(yīng)用根據(jù)業(yè)務(wù)拆分成一個(gè)一個(gè)的服務(wù)螟蝙,而微服務(wù)在這個(gè)基...
- (git上的源碼:https://gitee.com/rain7564/spring_microservices_...
- 解決什么問(wèn)題 ?闡述微服務(wù)以及服務(wù)注冊(cè)發(fā)現(xiàn)的部分概念 ?闡述Eureka服務(wù)注冊(cè)與發(fā)現(xiàn)的部分原理及細(xì)節(jié) 為什么需要...