微服務(wù)之Eureka服務(wù)發(fā)現(xiàn)

當(dāng)調(diào)用API或者發(fā)起網(wǎng)絡(luò)通信的時候,無論如何我們都要知道被調(diào)用方的IP和服務(wù)端口宏娄,大部分情況是通過域名和服務(wù)端口,事實上基于DNS的服務(wù)發(fā)現(xiàn)逮壁,因為DNS緩存孵坚、無法自治和其他不利因素的存在,有很多局限窥淆。傳統(tǒng)的DNS方式十饥,都是通過nginx或者其他代理軟件來實現(xiàn),物理機器的ip和port都是固定的祖乳,那么nginx中配置的服務(wù)ip和port也是固定的逗堵,服務(wù)列表的更新只能通過手動來做,但如果后端服務(wù)很多時眷昆,手動更新容易出錯蜒秤,效率也很低,這在后端服務(wù)發(fā)生故障時亚斋,不可用時間就可能會加長作媚。在微服務(wù)中,尤其是使用了Docker等虛擬化技術(shù)的微服務(wù)帅刊,其IP和port都是動態(tài)分配的纸泡,服務(wù)實例數(shù)也是動態(tài)變化的,那么就需要精細而準(zhǔn)確的服務(wù)發(fā)現(xiàn)機制赖瞒。當(dāng)微服務(wù)app啟動后女揭,告訴其他服務(wù)自己的ip和端口蚤假,這里的其他服務(wù)就是Eureka Server和Eureka Client,這樣其他服務(wù)就知道這個服務(wù)有多少實例在線吧兔,都在哪些地方磷仰,方便去負載均衡和調(diào)用。

Eureka屬于客戶端發(fā)現(xiàn)模式境蔼,客戶端負責(zé)決定相應(yīng)服務(wù)實例的網(wǎng)絡(luò)位置灶平,并且對請求實現(xiàn)負載均衡」客粒客戶端從一個服務(wù)注冊服務(wù)中查詢所有可用服務(wù)實例的庫逢享,并緩存到本地。服務(wù)調(diào)用時吴藻,客戶端使用負載均衡算法從多個后端服務(wù)實例中選擇出一個拼苍,然后發(fā)出請求。Eureka分為Eureka Server和Eureka client调缨, Eureka Server是一個服務(wù)注冊中心,為服務(wù)實例注冊管理和查詢可用實例提供了REST API吆你,并可以用其定位弦叶、負載均衡、故障恢復(fù)后端服務(wù)的中間層服務(wù)妇多。在服務(wù)啟動后伤哺,Eureka Client向服務(wù)注冊中心注冊服務(wù)同時會拉去注冊中心注冊表副本;在服務(wù)停止的時候者祖,Eureka Client向服務(wù)注冊中心注銷服務(wù)立莉;服務(wù)注冊后,Eureka Client會定時的發(fā)送心跳來刷新服務(wù)的最新狀態(tài)七问。

客戶端發(fā)現(xiàn)模式的優(yōu)點是服務(wù)調(diào)用蜓耻、負載均衡不需要和Eureka Server通信,直接使用本地注冊表副本械巡,因此Eureka Server不可用時是不會影響正常的服務(wù)調(diào)用刹淌,性能也不會因為網(wǎng)絡(luò)延遲和服務(wù)端延遲受到影響。但其缺點也很明顯讥耗,但某個服務(wù)不可用時有勾,各個Eureka Client不能及時的知道,需要1~3個心跳周期才能感知古程,但是蔼卡,由于基于Netflix的服務(wù)調(diào)用端都會使用Hystrix來容錯和降級,當(dāng)服務(wù)調(diào)用不可用時Hystrix也能及時感知到挣磨,通過熔斷機制來降級服務(wù)調(diào)用雇逞,因此彌補了基于客戶端服務(wù)發(fā)現(xiàn)的時效性的缺點荤懂。

Eureka Server采用的是對等通信(P2P),無中心化的架構(gòu),無master/slave區(qū)分喝峦,每一個server都是對等的势誊,既是Server又是Client,所以其集群方式可以自由發(fā)揮,可以各點互連谣蠢,也可以接力互連粟耻。Eureka Server通過運行多個實例以及彼此之間互相注冊來提高可用性,每個節(jié)點需要添加一個或多個有效的serviceUrl指向另一個節(jié)點眉踱。利用Eureka Server這種架構(gòu)特性挤忙, 我在Eureka Server Cluster的部署時采用了三角形通信模型,三角形是一個很好的均衡模型谈喳,既是各點互連册烈,又是接力互連,三角形本身就是一個穩(wěn)定性幾何形狀婿禽,有著穩(wěn)固赏僧、堅定搜索、耐壓的特點扭倾,家具淀零、建筑、交通等各種行業(yè)都有應(yīng)用膛壹。如下圖所示驾中,Eureka Cluster的每個實例都和另外2個實例通信交互。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末模聋,一起剝皮案震驚了整個濱河市肩民,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌链方,老刑警劉巖持痰,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異祟蚀,居然都是意外死亡共啃,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門暂题,熙熙樓的掌柜王于貴愁眉苦臉地迎上來移剪,“玉大人,你說我怎么就攤上這事薪者∽菘粒” “怎么了?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長攻人。 經(jīng)常有香客問我取试,道長,這世上最難降的妖魔是什么怀吻? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任瞬浓,我火速辦了婚禮,結(jié)果婚禮上蓬坡,老公的妹妹穿的比我還像新娘猿棉。我一直安慰自己,他們只是感情好屑咳,可當(dāng)我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布萨赁。 她就那樣靜靜地躺著,像睡著了一般兆龙。 火紅的嫁衣襯著肌膚如雪杖爽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天紫皇,我揣著相機與錄音慰安,去河邊找鬼。 笑死聪铺,一個胖子當(dāng)著我的面吹牛化焕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播计寇,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼脂倦!你這毒婦竟也來了番宁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤赖阻,失蹤者是張志新(化名)和其女友劉穎蝶押,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體火欧,經(jīng)...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡棋电,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了苇侵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赶盔。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖榆浓,靈堂內(nèi)的尸體忽然破棺而出于未,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布烘浦,位于F島的核電站抖坪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闷叉。R本人自食惡果不足惜擦俐,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望握侧。 院中可真熱鬧蚯瞧,春花似錦、人聲如沸藕咏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽孽查。三九已至饥悴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間盲再,已是汗流浹背西设。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留答朋,地道東北人贷揽。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像梦碗,于是被迫代替她去往敵國和親禽绪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內(nèi)容