中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

Kafka為什么不支持讀寫分離

本篇文章為大家展示了Kafka為什么不支持讀寫分離,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

在平山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計、網(wǎng)站制作 網(wǎng)站設(shè)計制作定制網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,平山網(wǎng)站建設(shè)費用合理。

在 Kafka 中,生產(chǎn)者寫入消息、消費者讀取消息的操作都是與 leader 副本進(jìn)行交互的,從 而實現(xiàn)的是一種主寫主讀的生產(chǎn)消費模型。數(shù)據(jù)庫、redis  等都具備主寫主讀的功能,與此同時還支持主寫從讀的功能,主寫從讀也就是讀寫分離,為了與主寫主讀對應(yīng),這里就以主寫從讀來稱呼!

Kafka 并不支持主寫從讀,這是為什么呢?

從代碼層面上來說,雖然增加了代碼復(fù)雜度,但在 Kafka 中這種功能完全可以支持。對于  這個問題,我們可以從“收益點”這個角度來做具體分析。主寫從讀可以讓從節(jié)點去分擔(dān)主節(jié) 點的負(fù)載壓力,預(yù)防主節(jié)點負(fù)載過重而從節(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 是否有必要支持主寫從讀的功能呢?

主寫從讀可以均攤一定的負(fù)載卻不能做到完全的負(fù)載均衡,比如對于數(shù)據(jù)寫壓力很大而讀  壓力很小的情況,從節(jié)點只能分?jǐn)偤苌俚呢?fù)載壓力,而絕大多數(shù)壓力還是在主節(jié)點上。而在 Kafka  中卻可以達(dá)到很大程度上的負(fù)載均衡,而且這種均衡是在主寫主讀的架構(gòu)上實現(xiàn)的。我們來看 一下 Kafka 的生產(chǎn)消費模型,如下圖所示:

Kafka為什么不支持讀寫分離

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

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

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

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

(3)消費者消費消息不均。消費者可能只對某些 broker 中的 leader 副本進(jìn)行大量的拉取操 作,而對其他 broker 中的 leader  副本不聞不問。

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

對此,我們可以做一些防范措施。

針對第一種情況,在主題創(chuàng)建的時候盡可能使分區(qū)分配 得均衡,好在 Kafka 中相應(yīng)的分配算法也是在極力地追求這一目標(biāo),如果是開發(fā)人員自定義的  分配,則需要注意這方面的內(nèi)容。對于第二和第三種情況,主寫從讀也無法解決。對于第四種 情況,Kafka 提供了優(yōu)先副本的選舉來達(dá)到 leader  副本的均衡,與此同時,也可以配合相應(yīng)的 監(jiān)控、告警和運維平臺來實現(xiàn)均衡的優(yōu)化。

在實際應(yīng)用中,配合監(jiān)控、告警、運維相結(jié)合的生態(tài)平臺,在絕大多數(shù)情況下 Kafka 都能 做到很大程度上的負(fù)載均衡。

總的來說,Kafka 只支持主寫主讀有幾個優(yōu)點:

可以簡化代碼的實現(xiàn)邏輯,減少出錯的可能;將負(fù)載粒度細(xì)化均攤,與主寫從讀相比,不僅負(fù)載效能更好,而且對用戶可控;沒有延時的影響;

在副本穩(wěn)定的情況下,不會出現(xiàn)數(shù)據(jù)不一致的情況。為此,Kafka 又何必再去實現(xiàn)對它而言毫無收益的主寫從讀的功能呢?這一切都得益于 Kafka  優(yōu)秀的架構(gòu)設(shè)計,從某種意義上來說,主寫從讀是由于設(shè)計上的缺陷而形成的權(quán)宜之計。

上述內(nèi)容就是Kafka為什么不支持讀寫分離,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)站名稱:Kafka為什么不支持讀寫分離
鏈接URL:http://www.rwnh.cn/article0/ippgio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供關(guān)鍵詞優(yōu)化、網(wǎng)站設(shè)計、網(wǎng)站收錄、虛擬主機、網(wǎng)站內(nèi)鏈、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
二手房| 尉犁县| 米易县| 永宁县| 乌拉特中旗| 安泽县| 汕头市| 上杭县| 内乡县| 出国| 五大连池市| 卢湾区| 齐齐哈尔市| 方山县| 九寨沟县| 开化县| 土默特右旗| 邮箱| 新乡县| 侯马市| 全南县| 吉木萨尔县| 子洲县| 桐庐县| 建平县| 阿巴嘎旗| 丰原市| 英德市| 惠水县| 华池县| 望城县| 南京市| 日照市| 元谋县| 读书| 同仁县| 徐州市| 吉木萨尔县| 滨海县| 玛曲县| 蒙阴县|