阿里面試篙耗,為什么Kafka不支持讀寫分離

image

還在加班,收到一個小伙伴的吐槽:狼哥宪赶,阿里的面試太變態(tài)了宗弯,我只是在工作中用過kafka,然后簡歷上提了下搂妻,就被抓著一個勁的問蒙保,一些基礎(chǔ)的問題,我還可以勉強答出來欲主,但是問到“為什么Kafka不支持讀寫分離”邓厕,我就懵逼了。

說實話扁瓢,這個狼哥也不知道详恼,對于kafka,我也只會生產(chǎn)引几、消費单雾。

image

一直沒有接觸過kafka相關(guān)的知識,為了拓展一下技術(shù)廣度,找到了我廝大

為什么數(shù)據(jù)庫硅堆、redis都支持了讀寫分離功能屿储,而kafka卻沒有?

廝大也是狠人渐逃,直接打開源碼從頭開始講够掠,我一看這情況不對,按照這進度得講到天黑了茄菊,蹭著廝大上廁所的空隙疯潭,我呲溜跑了~~~

image.gif

廝大估計見我已經(jīng)呲溜了,第二天就甩我一篇文章面殖,還是熱乎的竖哩,文末還有精華

從代碼層面上來說,在 Kafka 中完全可以支持這種功能脊僚,但是會大大增加代碼的復(fù)雜度相叁,所以我們要從“收益點”這個角度來做具體分析。主寫從讀可以讓從節(jié)點去分擔(dān)主節(jié) 點的負載壓力辽幌,預(yù)防主節(jié)點負載過重而從節(jié)點卻空閑的情況發(fā)生增淹。但是主寫從讀也有 2 個很明 顯的缺點:

  • 數(shù)據(jù)一致性問題。數(shù)據(jù)從主節(jié)點轉(zhuǎn)到從節(jié)點必然會有一個延時的時間窗口乌企,這個時間 窗口會導(dǎo)致主從節(jié)點之間的數(shù)據(jù)不一致虑润。某一時刻,在主節(jié)點和從節(jié)點中 A 數(shù)據(jù)的值都為 X加酵, 之后將主節(jié)點中 A 的值修改為 Y拳喻,那么在這個變更通知到從節(jié)點之前,應(yīng)用讀取從節(jié)點中的 A 數(shù)據(jù)的值并不為最新的 Y猪腕,由此便產(chǎn)生了數(shù)據(jù)不一致的問題舞蔽。

  • 延時問題。類似 Redis 這種組件码撰,數(shù)據(jù)從寫入主節(jié)點到同步至從節(jié)點中的過程需要經(jīng) 歷網(wǎng)絡(luò)→主節(jié)點內(nèi)存→網(wǎng)絡(luò)→從節(jié)點內(nèi)存這幾個階段,整個過程會耗費一定的時間个盆。而在 Kafka 中脖岛,主從同步會比 Redis 更加耗時,它需要經(jīng)歷網(wǎng)絡(luò)→主節(jié)點內(nèi)存→主節(jié)點磁盤→網(wǎng)絡(luò)→從節(jié) 點內(nèi)存→從節(jié)點磁盤這幾個階段颊亮。對延時敏感的應(yīng)用而言柴梆,主寫從讀的功能并不太適用。

現(xiàn)實情況下终惑,很多應(yīng)用既可以忍受一定程度上的延時绍在,也可以忍受一段時間內(nèi)的數(shù)據(jù)不一 致的情況,那么對于這種情況,Kafka 是否有必要支持主寫從讀的功能呢?

主寫從讀可以均攤一定的負載卻不能做到完全的負載均衡偿渡,比如對于數(shù)據(jù)寫壓力很大而讀 壓力很小的情況臼寄,從節(jié)點只能分攤很少的負載壓力,而絕大多數(shù)壓力還是在主節(jié)點上溜宽。而在 Kafka 中卻可以達到很大程度上的負載均衡吉拳,而且這種均衡是在主寫主讀的架構(gòu)上實現(xiàn)的。我們來看 一下 Kafka 的生產(chǎn)消費模型适揉,如下圖所示留攒。

image.gif

在 Kafka 集群中有 3 個分區(qū),每個分區(qū)有 3 個副本嫉嘀,正好均勻地分布在 3個 broker 上炼邀,灰色陰影的代表 leader 副本,非灰色陰影的代表 follower 副本剪侮,虛線表示 follower 副本從 leader 副本上拉取消息拭宁。當生產(chǎn)者寫入消息的時候都寫入 leader 副本,對于圖 8-23 中的 情形票彪,每個 broker 都有消息從生產(chǎn)者流入;當消費者讀取消息的時候也是從 leader 副本中讀取 的红淡,對于圖 8-23 中的情形,每個 broker 都有消息流出到消費者降铸。

我們很明顯地可以看出在旱,每個 broker 上的讀寫負載都是一樣的,這就說明 Kafka 可以通過 主寫主讀實現(xiàn)主寫從讀實現(xiàn)不了的負載均衡推掸。上圖展示是一種理想的部署情況桶蝎,有以下幾種 情況(包含但不僅限于)會造成一定程度上的負載不均衡:

  • broker 端的分區(qū)分配不均。當創(chuàng)建主題的時候可能會出現(xiàn)某些 broker 分配到的分區(qū)數(shù) 多而其他 broker 分配到的分區(qū)數(shù)少谅畅,那么自然而然地分配到的 leader 副本也就不均登渣。

  • 生產(chǎn)者寫入消息不均。生產(chǎn)者可能只對某些 broker 中的 leader 副本進行大量的寫入操 作毡泻,而對其他 broker 中的 leader 副本不聞不問胜茧。

  • 消費者消費消息不均。消費者可能只對某些 broker 中的 leader 副本進行大量的拉取操 作仇味,而對其他 broker 中的 leader 副本不聞不問呻顽。

  • leader 副本的切換不均。在實際應(yīng)用中可能會由于 broker 宕機而造成主從副本的切換丹墨, 或者分區(qū)副本的重分配等廊遍,這些動作都有可能造成各個 broker 中 leader 副本的分配不均。

對此贩挣,我們可以做一些防范措施喉前。針對第一種情況没酣,在主題創(chuàng)建的時候盡可能使分區(qū)分配 得均衡,好在 Kafka 中相應(yīng)的分配算法也是在極力地追求這一目標卵迂,如果是開發(fā)人員自定義的 分配裕便,則需要注意這方面的內(nèi)容。對于第二和第三種情況狭握,主寫從讀也無法解決闪金。對于第四種 情況,Kafka 提供了優(yōu)先副本的選舉來達到 leader 副本的均衡论颅,與此同時哎垦,也可以配合相應(yīng)的 監(jiān)控、告警和運維平臺來實現(xiàn)均衡的優(yōu)化恃疯。

所以漏设,從某種意義上來說,主寫從讀是由于設(shè)計上的缺陷而形成的權(quán)宜之計今妄。

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末郑口,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子盾鳞,更是在濱河造成了極大的恐慌犬性,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腾仅,死亡現(xiàn)場離奇詭異乒裆,居然都是意外死亡,警方通過查閱死者的電腦和手機推励,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評論 3 399
  • 文/潘曉璐 我一進店門鹤耍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人验辞,你說我怎么就攤上這事稿黄。” “怎么了跌造?”我有些...
    開封第一講書人閱讀 168,561評論 0 360
  • 文/不壞的土叔 我叫張陵杆怕,是天一觀的道長。 經(jīng)常有香客問我壳贪,道長陵珍,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評論 1 298
  • 正文 為了忘掉前任撑碴,我火速辦了婚禮,結(jié)果婚禮上朝墩,老公的妹妹穿的比我還像新娘醉拓。我一直安慰自己伟姐,他們只是感情好,可當我...
    茶點故事閱讀 68,798評論 6 397
  • 文/花漫 我一把揭開白布亿卤。 她就那樣靜靜地躺著愤兵,像睡著了一般。 火紅的嫁衣襯著肌膚如雪排吴。 梳的紋絲不亂的頭發(fā)上秆乳,一...
    開封第一講書人閱讀 52,394評論 1 310
  • 那天,我揣著相機與錄音钻哩,去河邊找鬼屹堰。 笑死,一個胖子當著我的面吹牛街氢,可吹牛的內(nèi)容都是我干的扯键。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼珊肃,長吁一口氣:“原來是場噩夢啊……” “哼荣刑!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伦乔,我...
    開封第一講書人閱讀 39,852評論 0 276
  • 序言:老撾萬榮一對情侶失蹤厉亏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后烈和,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體爱只,經(jīng)...
    沈念sama閱讀 46,409評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,483評論 3 341
  • 正文 我和宋清朗相戀三年斥杜,在試婚紗的時候發(fā)現(xiàn)自己被綠了虱颗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,615評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蔗喂,死狀恐怖忘渔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缰儿,我是刑警寧澤畦粮,帶...
    沈念sama閱讀 36,303評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站乖阵,受9級特大地震影響宣赔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞪浸,卻給世界環(huán)境...
    茶點故事閱讀 41,979評論 3 334
  • 文/蒙蒙 一儒将、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧对蒲,春花似錦钩蚊、人聲如沸贡翘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鸣驱。三九已至,卻和暖如春蝠咆,著一層夾襖步出監(jiān)牢的瞬間踊东,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評論 1 272
  • 我被黑心中介騙來泰國打工刚操, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闸翅,地道東北人。 一個月前我還...
    沈念sama閱讀 49,041評論 3 377
  • 正文 我出身青樓赡茸,卻偏偏與公主長得像缎脾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子占卧,可洞房花燭夜當晚...
    茶點故事閱讀 45,630評論 2 359

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