Eureka源碼剖析之七:總結(jié)

Eureka源碼剖析之一:初始化-啟動(dòng)

Eureka源碼剖析之二:服務(wù)注冊(cè)

Eureka源碼剖析之三:服務(wù)拉取

Eureka源碼剖析之四:服務(wù)續(xù)約

Eureka源碼剖析之五:服務(wù)下線

總結(jié)下eureka系統(tǒng)架構(gòu)和相關(guān)面試題成洗。

〓一锨推、Eureka系統(tǒng)架構(gòu)交互圖

eureka.jpg

來(lái)自網(wǎng)上更詳細(xì)的圖:

20190705222910951.png

〓二大年、定時(shí)任務(wù)匯總

客戶端定時(shí)任務(wù)

1)每30秒刷新緩存(服務(wù)拉取)
2)每30秒發(fā)送心跳(服務(wù)續(xù)約)

服務(wù)端定時(shí)任務(wù)

1)每10分鐘更新集群節(jié)點(diǎn)數(shù)據(jù)
2)每15分鐘更新續(xù)約數(shù)及閾值
3)每1分鐘剔除過(guò)期注冊(cè)信息

〓三暮刃、常見(jiàn)(面試)問(wèn)題匯總

1、Server節(jié)點(diǎn)能否在配置文件里配置自身的Server地址爆土?
可以的椭懊!當(dāng)一個(gè)Server解析配置的集群地址時(shí),會(huì)過(guò)濾掉自身的地址雾消,這樣服務(wù)同步時(shí)就不需要同步自身了灾搏。我們配置多個(gè)Server時(shí)挫望,不需要手動(dòng)的排除Server自身的發(fā)現(xiàn)地址。
2狂窑、Server是否配置registerWithEureka和fetchRegistry有什么區(qū)別媳板?
其實(shí)每一個(gè)Eureka Server Node都內(nèi)置了一個(gè)Eureka Client,也就是說(shuō)一個(gè)Server Node節(jié)點(diǎn)可以接受其他Client的注冊(cè)泉哈,也可以作為一個(gè)Client注冊(cè)到其他Server上蛉幸,被其他Client發(fā)現(xiàn)和調(diào)用。Server Node上的Server和Client可以理解為兩個(gè)容器丛晦,他們僅僅在初始化時(shí)打交道奕纫,之后就沒(méi)有什么關(guān)聯(lián)了。
registerWithEureka和fetchRegistry的默認(rèn)值都是true烫沙,他們都是客戶端配置匹层,也就是eureka.client開(kāi)頭的配置信息。
通過(guò)上述說(shuō)明就很好理解這兩個(gè)參數(shù)設(shè)置與否的區(qū)別了:
registerWithEureka:是否要注冊(cè)到其他Server上锌蓄。如果我的Server上其實(shí)開(kāi)放了一些Http接口供調(diào)用升筏,那么就需要注冊(cè),這樣其他的Client才能發(fā)現(xiàn)我的服務(wù)瘸爽,才能通過(guò)RPC調(diào)用我提供的Http接口您访。如果我的Server沒(méi)有提供對(duì)外Http接口,那么這個(gè)參數(shù)可以設(shè)置為false剪决。
fetchRegistry:是否需要拉取服務(wù)信息灵汪。和是否注冊(cè)一樣,如果我的Server需要調(diào)用其他的Client的Http接口柑潦,那么就需要獲取相應(yīng)的服務(wù)發(fā)現(xiàn)信息享言,這樣才能正常的調(diào)用。同時(shí)這個(gè)參數(shù)還有一個(gè)重要的作用妒茬,就是決定Server在初始化時(shí)是否立即全量同步其他節(jié)點(diǎn)的服務(wù)信息54浮!乍钻!Server初始化時(shí)會(huì)先初始化其內(nèi)置的Client肛循。若配置了fetchRegistry=true,那么Client在初始化時(shí)會(huì)從其他Server全量拉取服務(wù)信息银择,放進(jìn)Client容器中多糠。Server在初始化時(shí)會(huì)嘗試同步Client容器里的服務(wù)信息,如果fetchRegistry=false浩考,服務(wù)信息不存在夹孔,只能被動(dòng)的等其他Server節(jié)點(diǎn)以增量的形式同步過(guò)來(lái)(Client在執(zhí)行注冊(cè)和心跳時(shí)對(duì)應(yīng)的注冊(cè)Server節(jié)點(diǎn)會(huì)廣播此事件,同步給其他的Server節(jié)點(diǎn)。當(dāng)其他Server節(jié)點(diǎn)還沒(méi)有此服務(wù)信息時(shí)搭伤,改為注冊(cè)此服務(wù)信息)只怎。當(dāng)然正常的通過(guò)心跳來(lái)同步,最多也僅需要30S而已怜俐,是否需要設(shè)置此參數(shù)就看各自的需求了身堡。
3、Server和Client節(jié)點(diǎn)配置全部的Server地址和部分Server地址有什么區(qū)別拍鲤?
Client在與Server交互時(shí)贴谎,只會(huì)與其中的一個(gè)Server進(jìn)行交互。
Server之間的數(shù)據(jù)同步和Server與Client間的數(shù)據(jù)交互使用的是同一個(gè)Http接口季稳,比如注冊(cè)擅这,心跳,狀態(tài)更新景鼠,關(guān)閉服務(wù)等等猪狈。只是Server與Server之間同步時(shí)芋簿,會(huì)有一個(gè)Header參數(shù)刹缝,x-netflix-discovery-replication = true ,Server通過(guò)這個(gè)標(biāo)識(shí)來(lái)判斷當(dāng)前請(qǐng)求是來(lái)自Server還是來(lái)自Client燥筷。如果 x-netflix-discovery-replication不存在舵盈,則指明請(qǐng)求來(lái)自Client鄙才,Server在處理此請(qǐng)求時(shí)還會(huì)將請(qǐng)求廣播給配置上的其他Server節(jié)點(diǎn)庵朝,在廣播請(qǐng)求時(shí)阱洪,Header帶上x(chóng)-netflix-discovery-replication=true芬迄。當(dāng)其他Server節(jié)點(diǎn)接受到此請(qǐng)求時(shí)问顷,通過(guò)此Header參數(shù)判斷是一個(gè)Server同步請(qǐng)求,因此只處理此請(qǐng)求禀梳,而不再?gòu)V播杜窄。Server之間的數(shù)據(jù)同步只傳播一次!
4算途、Server回收服務(wù)信息的自我保護(hù)機(jī)制是什么塞耕?需要注意什么?
Server每隔60S執(zhí)行一次服務(wù)信息回收嘴瓤,移除那些心跳時(shí)間超時(shí)的扫外。能夠回收有3個(gè)前提:
1)心跳信息超時(shí),也就是回收時(shí)間距離上次心跳時(shí)間超過(guò)90S廓脆。
2)開(kāi)啟了租約過(guò)期功能筛谚,默認(rèn)是開(kāi)啟的。
3)未觸發(fā)自我保護(hù)機(jī)制停忿。所謂的自我保護(hù)機(jī)制驾讲,指的是上一分鐘內(nèi),服務(wù)實(shí)際發(fā)送心跳的總數(shù)超過(guò)預(yù)計(jì)總數(shù)的85%,可能近似理解為正常存活的Client超過(guò)85%吮铭。
需要注意些什么时迫?如果你的Client個(gè)數(shù)較少,比如就5個(gè)谓晌,或者說(shuō)同一個(gè)Server對(duì)應(yīng)的Client就5個(gè)掠拳,那么當(dāng)其中的一個(gè)宕機(jī)了,1/5=20%扎谎,直接就觸發(fā)了自我保護(hù)機(jī)制碳想,宕機(jī)的服務(wù)信息會(huì)一直存在,不會(huì)被回收毁靶。對(duì)于這種情況胧奔,可以設(shè)置Server觸發(fā)自我保護(hù)機(jī)制的臨界值,renewalPercentThreshold = 0.85预吆,默認(rèn)是85%龙填,可以修改成適當(dāng)?shù)闹担热?.5拐叉。
5岩遗、Server節(jié)點(diǎn)間的服務(wù)信息同步的流程是怎么樣的?
Server在初始化時(shí)凤瘦,會(huì)根據(jù)配置信息生成與其他的Server同步的客戶端宿礁。每當(dāng)Server接收到Client的服務(wù)請(qǐng)求時(shí),會(huì)先處理請(qǐng)求蔬芥,然后將自身作為一個(gè)Client的角色梆靖,用相同的請(qǐng)求信息去請(qǐng)求配置里的那些Server節(jié)點(diǎn)。會(huì)將同步請(qǐng)求封裝成一個(gè)Task笔诵,然后存入一個(gè)Queue中返吻,Server定時(shí)的提取Queue里的任務(wù),批量的處理它們乎婿。
也就是說(shuō)Server之間的服務(wù)同步是異步執(zhí)行的测僵,而不像Zookeeper一樣,每個(gè)操作都需要過(guò)半數(shù)的節(jié)點(diǎn)執(zhí)行成功后才返回給Client谢翎。同時(shí)Server之間的同步只會(huì)傳播一次捍靠,它們通過(guò)Header里的一個(gè)參數(shù)來(lái)表明是來(lái)自Client的請(qǐng)求還是Server的請(qǐng)求。如果是Server的請(qǐng)求岳服,那么接收到此請(qǐng)求后不會(huì)再進(jìn)行傳播剂公。
6、Eureka服務(wù)注冊(cè)到發(fā)現(xiàn)最長(zhǎng)需要多長(zhǎng)時(shí)間吊宋?
最長(zhǎng)需要2分鐘纲辽。30秒:服務(wù)端響應(yīng)緩存ResponseCache颜武;30秒:Client緩存;30秒:Ribbon緩存拖吼,30秒:客戶端啟動(dòng)心跳請(qǐng)求時(shí)注冊(cè)(新版已優(yōu)化可以啟動(dòng)馬上注冊(cè))鳞上。
7、Eureka Server如何應(yīng)對(duì)并發(fā)請(qǐng)求吊档?
每分鐘拉取服務(wù)2次篙议,每分鐘心跳請(qǐng)求2次,即每分鐘會(huì)有4次請(qǐng)求怠硼。如果有2000個(gè)服務(wù)鬼贱,那么每分鐘就有8000次請(qǐng)求,即每秒有133次請(qǐng)求香璃,約每分鐘有150次这难。Eureka Server的應(yīng)對(duì)方式是:①對(duì)注冊(cè)表操作使用讀寫(xiě)鎖優(yōu)化;②注冊(cè)表的多級(jí)緩存機(jī)制葡秒。
參考資料

https://blog.csdn.net/qq_17164811/article/details/94773607
http://www.majunwei.com/view/201808131015366640.html
https://www.cnblogs.com/xishuai/p/spring-cloud-eureka-safe.html
https://blog.csdn.net/qq_38289534/article/details/82146939

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末姻乓,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子眯牧,更是在濱河造成了極大的恐慌蹋岩,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,383評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件学少,死亡現(xiàn)場(chǎng)離奇詭異剪个,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)版确,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)禁偎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人阀坏,你說(shuō)我怎么就攤上這事“侍矗” “怎么了忌堂?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,852評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)酗洒。 經(jīng)常有香客問(wèn)我士修,道長(zhǎng),這世上最難降的妖魔是什么樱衷? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,621評(píng)論 1 284
  • 正文 為了忘掉前任棋嘲,我火速辦了婚禮,結(jié)果婚禮上矩桂,老公的妹妹穿的比我還像新娘沸移。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,741評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布雹锣。 她就那樣靜靜地躺著网沾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蕊爵。 梳的紋絲不亂的頭發(fā)上辉哥,一...
    開(kāi)封第一講書(shū)人閱讀 49,929評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音攒射,去河邊找鬼醋旦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛会放,可吹牛的內(nèi)容都是我干的饲齐。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸦概,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼箩张!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起窗市,我...
    開(kāi)封第一講書(shū)人閱讀 37,803評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤先慷,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后咨察,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體论熙,經(jīng)...
    沈念sama閱讀 44,265評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,582評(píng)論 2 327
  • 正文 我和宋清朗相戀三年摄狱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脓诡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,716評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡媒役,死狀恐怖祝谚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酣衷,我是刑警寧澤交惯,帶...
    沈念sama閱讀 34,395評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站穿仪,受9級(jí)特大地震影響席爽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜啊片,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,039評(píng)論 3 316
  • 文/蒙蒙 一只锻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧紫谷,春花似錦齐饮、人聲如沸捐寥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,798評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)上真。三九已至,卻和暖如春羹膳,著一層夾襖步出監(jiān)牢的瞬間睡互,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,027評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工陵像, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留就珠,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,488評(píng)論 2 361
  • 正文 我出身青樓醒颖,卻偏偏與公主長(zhǎng)得像妻怎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子泞歉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,612評(píng)論 2 350

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