11111111111
知識共享平臺
知識共享平臺

討教大學平臺

  • 首頁
  • 免費課
  • 精品課
  • 討教題庫
  • 企業服務

    hot

  • 下載APP
  • 證書查詢
  • 關于我們
我問
討教號
搜索
消息
  • 我的文章

    我的關注

    我的問答

    我的秘密

    我的評論

    我的訂閱

    我的打賞

    我的錢包

    我的通知

    我的設置

    退出登錄

  • ×

    登錄

    討教 | 通行證

    登錄
    立即注冊
    忘記密碼?
    使用微信登錄

    提問 ×

    寫下你的問題,準確的表述更容易得到答案

    類型話題

    選擇支付方式
    您的討教幣 111 付費金額

    国产第一亚洲_浪货一天不做就难受呀_欧洲视频在线观看_亚洲精品一区二区三区美女

            簡歷寫了會Kafka,面試官90%會讓你講講acks參數對消息持久化的影響

            JAVA葵花寶典
            2019-06-17 16:28:10
            16篇 作品
            1989 總閱讀量

            目錄

            (0)寫在前面

            (1)如何保證宕機時數據不丟失?

            (2)多副本冗余的高可用機制

            (3)多副本之間數據如何同步?

            (4)ISR到底指的什么東西?

            (5)acks參數的含義?

            (6)最后的思考

            (0)寫在前面 


            面試大廠時,一旦簡歷上寫了Kafka,幾乎必然會被問到一個問題:說說acks參數對消息持久化的影響?


            這個acks參數在kafka的使用中,是非常核心以及關鍵的一個參數,決定了很多東西。


            所以無論是為了面試還是實際項目使用,大家都值得看一下這篇文章對Kafka的acks參數的分析,以及背后的原理。



            (1)如何保證宕機的時候數據不丟失?


            如果要想理解這個acks參數的含義,首先就得搞明白kafka的高可用架構原理。


            比如下面的圖里就是表明了對于每一個Topic,我們都可以設置他包含幾個Partition,每個Partition負責存儲這個Topic一部分的數據。


            然后Kafka的Broker集群中,每臺機器上都存儲了一些Partition,也就存放了Topic的一部分數據,這樣就實現了Topic的數據分布式存儲在一個Broker集群上。


            但是有一個問題,萬一 一個Kafka Broker宕機了,此時上面存儲的數據不就丟失了嗎?


            沒錯,這就是一個比較大的問題了,分布式系統的數據丟失問題,是他首先必須要解決的,一旦說任何一臺機器宕機,此時就會導致數據的丟失。




            (2)多副本冗余的高可用機制


            所以如果大家去分析任何一個分布式系統的原理,比如說zookeeper、kafka、redis cluster、elasticsearch、hdfs,等等,其實他都有自己內部的一套多副本冗余的機制,多副本冗余幾乎是現在任何一個優秀的分布式系統都一般要具備的功能。


            在kafka集群中,每個Partition都有多個副本,其中一個副本叫做leader,其他的副本叫做follower,如下圖。


            如上圖所示,假設一個Topic拆分為了3個Partition,分別是Partition0,Partiton1,Partition2,此時每個Partition都有2個副本。


            比如Partition0有一個副本是Leader,另外一個副本是Follower,Leader和Follower兩個副本是分布在不同機器上的。


            這樣的多副本冗余機制,可以保證任何一臺機器掛掉,都不會導致數據徹底丟失,因為起碼還是有副本在別的機器上的。




            (3)多副本之間數據如何同步?


            接著我們就來看看多個副本之間數據是如何同步的?其實任何一個Partition,只有Leader是對外提供讀寫服務的


            也就是說,如果有一個客戶端往一個Partition寫入數據,此時一般就是寫入這個Partition的Leader副本。


            然后Leader副本接收到數據之后,Follower副本會不停的給他發送請求嘗試去拉取最新的數據,拉取到自己本地后,寫入磁盤中。如下圖所示:



            (4)ISR到底指的是什么東西?


            既然大家已經知道了Partiton的多副本同步數據的機制了,那么就可以來看看ISR是什么了。


            ISR全稱是“In-Sync Replicas”,也就是保持同步的副本,他的含義就是,跟Leader始終保持同步的Follower有哪些。


            大家可以想一下 ,如果說某個Follower所在的Broker因為JVM FullGC之類的問題,導致自己卡頓了,無法及時從Leader拉取同步數據,那么是不是會導致Follower的數據比Leader要落后很多?


            所以這個時候,就意味著Follower已經跟Leader不再處于同步的關系了。但是只要Follower一直及時從Leader同步數據,就可以保證他們是處于同步的關系的。


            所以每個Partition都有一個ISR,這個ISR里一定會有Leader自己,因為Leader肯定數據是最新的,然后就是那些跟Leader保持同步的Follower,也會在ISR里。




            (5)acks參數的含義


            鋪墊了那么多的東西,最后終于可以進入主題來聊一下acks參數的含義了。


            如果大家沒看明白前面的那些副本機制、同步機制、ISR機制,那么就無法充分的理解acks參數的含義,這個參數實際上決定了很多重要的東西。


            首先這個acks參數,是在KafkaProducer,也就是生產者客戶端里設置的


            也就是說,你往kafka寫數據的時候,就可以來設置這個acks參數。然后這個參數實際上有三種常見的值可以設置,分別是:0、1 和 all。


            第一種選擇是把acks參數設置為0,意思就是我的KafkaProducer在客戶端,只要把消息發送出去,不管那條數據有沒有在哪怕Partition Leader上落到磁盤,我就不管他了,直接就認為這個消息發送成功了。


            如果你采用這種設置的話,那么你必須注意的一點是,可能你發送出去的消息還在半路。結果呢,Partition Leader所在Broker就直接掛了,然后結果你的客戶端還認為消息發送成功了,此時就會導致這條消息就丟失了。

            第二種選擇是設置 acks = 1,意思就是說只要Partition Leader接收到消息而且寫入本地磁盤了,就認為成功了,不管他其他的Follower有沒有同步過去這條消息了。


            這種設置其實是kafka默認的設置,大家請注意,劃重點!這是默認的設置


            也就是說,默認情況下,你要是不管acks這個參數,只要Partition Leader寫成功就算成功。


            但是這里有一個問題,萬一Partition Leader剛剛接收到消息,Follower還沒來得及同步過去,結果Leader所在的broker宕機了,此時也會導致這條消息丟失,因為人家客戶端已經認為發送成功了。


            最后一種情況,就是設置acks=all,這個意思就是說,Partition Leader接收到消息之后,還必須要求ISR列表里跟Leader保持同步的那些Follower都要把消息同步過去,才能認為這條消息是寫入成功了。


            如果說Partition Leader剛接收到了消息,但是結果Follower沒有收到消息,此時Leader宕機了,那么客戶端會感知到這個消息沒發送成功,他會重試再次發送消息過去。


            此時可能Partition 2的Follower變成Leader了,此時ISR列表里只有最新的這個Follower轉變成的Leader了,那么只要這個新的Leader接收消息就算成功了。


            (6)最后的思考


            acks=all 就可以代表數據一定不會丟失了嗎?


            當然不是,如果你的Partition只有一個副本,也就是一個Leader,任何Follower都沒有,你認為acks=all有用嗎?


            當然沒用了,因為ISR里就一個Leader,他接收完消息后宕機,也會導致數據丟失。


            所以說,這個acks=all,必須跟ISR列表里至少有2個以上的副本配合使用,起碼是有一個Leader和一個Follower才可以。


            這樣才能保證說寫一條數據過去,一定是2個以上的副本都收到了才算是成功,此時任何一個副本宕機,不會導致數據丟失。


            所以希望大家把這篇文章好好理解一下,對大家出去面試,或者工作中用kafka都是很好的一個幫助。


            本網站內容僅代表作者本人的觀點,不代表本網站的觀點和看法,與本網站立場無關,如有侵權請聯系討教。
            給作者打賞,鼓勵TA抓緊創作
            0人打賞金額
            JAVA葵花寶典
            16篇 作品
            1989 總閱讀量
            評論
            您可能感興趣的文章

            項目管理服務模式

            敏捷項目管理與傳統項目管理比較

            項目管理的特點

            PMO是什么?是管項目經理的嘛?

            項目經理必須關注的開會十大關鍵問題!

            項目的組成要素

            熱門話題 更多話題
            精益生產 質量管理 智能制造
            職場效率 項目管理 討教
            AI 大數據 六西格瑪
            ×

            給作者打賞,鼓勵TA抓緊創作!

            選擇支付方式
            選擇打賞金額
            注:打賞的收益歸作者,非平臺

            微信掃描支付

            打賞金額: 1元

            ×

            給作者打賞,鼓勵TA抓緊創作!

            您的討教幣
            填寫您打賞討教幣數量
            輸入密碼

            111

            注:打賞的收益歸作者,非平臺

            微信掃描支付

            打賞金額: 1元

            国产第一亚洲_浪货一天不做就难受呀_欧洲视频在线观看_亚洲精品一区二区三区美女

                  9000px;">

                        亚洲人成在线播放网站岛国| 午夜视频在线观看一区二区三区| 在线免费不卡视频| 久久久精品黄色| 国内一区二区在线| 国产精品不卡在线观看| 91亚洲精品一区二区乱码| 欧美日本不卡视频| 欧美一级xxx| 精品三级在线看| 精品福利av导航| 国产三级一区二区| 欧美国产精品一区二区| 亚洲一区二区成人在线观看| 日本高清不卡视频| 国产成人99久久亚洲综合精品| 一个色妞综合视频在线观看| 日韩国产欧美三级| 日日摸夜夜添夜夜添国产精品 | 亚洲少妇中出一区| 337p粉嫩大胆噜噜噜噜噜91av | 99久久精品99国产精品| 一区二区久久久| 国产亚洲精久久久久久| 免费观看成人鲁鲁鲁鲁鲁视频| a在线播放不卡| 欧美视频在线播放| 日韩欧美在线1卡| 国产婷婷色一区二区三区 | 91毛片在线观看| 亚洲一区二区在线免费看| 91精品国产入口在线| 国产制服丝袜一区| 亚洲色图欧美偷拍| 精品国产乱码久久久久久免费| 国产精品日韩精品欧美在线| 91福利视频网站| 成人综合婷婷国产精品久久蜜臀| 亚洲国产美国国产综合一区二区| 国产亚洲精品精华液| 日韩视频免费观看高清完整版 | 国产精品女同互慰在线看| 色综合天天性综合| 韩国视频一区二区| 久久国产尿小便嘘嘘| 午夜精品国产更新| 亚洲自拍偷拍网站| 一区二区三区在线播| 久久精品亚洲精品国产欧美kt∨| 欧美日韩视频在线观看一区二区三区| 国产麻豆精品久久一二三| 亚洲一区视频在线观看视频| 欧美r级电影在线观看| 国产精品亚洲专一区二区三区| 亚洲精品高清视频在线观看| 日韩伦理电影网| 精品一区二区久久| 一区二区三区欧美日韩| 亚洲欧美在线另类| 欧美一区二区久久久| 久久精品国产一区二区三区免费看| 亚洲国产毛片aaaaa无费看 | 欧美国产日韩亚洲一区| 欧美三级午夜理伦三级中视频| 久久国产精品99久久久久久老狼 | 欧美日韩综合在线| 国产精品美女久久久久aⅴ国产馆| 久久婷婷一区二区三区| 3d成人h动漫网站入口| 欧美在线一二三| 欧美性做爰猛烈叫床潮| 色综合一区二区| 五月天一区二区三区| 国产成人av影院| 91婷婷韩国欧美一区二区| 不卡的看片网站| 粉嫩av一区二区三区| 不卡在线观看av| 国产欧美久久久精品影院| 亚洲国产一二三| 日本va欧美va瓶| 久久精品国产**网站演员| 国产在线精品一区二区不卡了 | 91免费看`日韩一区二区| 国产在线播放一区三区四| 久久99精品网久久| 国产成人a级片| 久久久久国产精品免费免费搜索| 国产欧美日本一区视频| 一区二区三区国产豹纹内裤在线| 日韩极品在线观看| 9191久久久久久久久久久| 久久免费看少妇高潮| 一区二区三区不卡视频| 欧美a级理论片| 99re成人精品视频| 亚洲综合丝袜美腿| 国产91精品久久久久久久网曝门| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 国产一区二区0| 色偷偷久久人人79超碰人人澡 | 欧美另类videos死尸| 亚洲国产欧美在线| 成人av网站在线| 亚洲精品一区二区三区影院| 亚洲综合久久av| gogo大胆日本视频一区| 欧美videofree性高清杂交| 国产精选一区二区三区| 欧美精品乱码久久久久久按摩| 国产精品沙发午睡系列990531| 久久精品国产一区二区三| 717成人午夜免费福利电影| 亚洲精品福利视频网站| 欧美成人综合网站| 日本一不卡视频| 欧美一级二级三级蜜桃| 日韩不卡在线观看日韩不卡视频| 99久久婷婷国产综合精品| 国产真实乱子伦精品视频| 国产精品三级在线观看| av综合在线播放| 亚洲另类春色国产| 在线亚洲一区观看| 日本女人一区二区三区| 日韩av电影免费观看高清完整版在线观看 | 性做久久久久久| 中文字幕在线一区| 国产丝袜欧美中文另类| 日韩欧美一二三| 国产一区 二区| 国产精品大尺度| 69精品人人人人| 久久精品99久久久| 成人午夜看片网址| 国产日韩欧美激情| 在线亚洲人成电影网站色www| 亚洲免费观看在线观看| 在线综合视频播放| 色综合久久久久| av在线综合网| 国内精品伊人久久久久影院对白| 国产精品欧美一级免费| 日本三级韩国三级欧美三级| 亚洲欧洲一区二区三区| 91精品国产色综合久久久蜜香臀| 欧美在线免费观看视频| 91丨porny丨最新| 色国产综合视频| 91免费版在线| 成人激情校园春色| 精一区二区三区| 欧美日韩一区二区三区高清| 99re热这里只有精品视频| 成人精品国产福利| 成人免费视频一区| 91福利国产精品| 欧美高清激情brazzers| 日本韩国视频一区二区| 成人一区在线观看| 国产成人免费视频网站| 95精品视频在线| 中文字幕一区二区三区在线观看| 亚洲免费高清视频在线| 亚洲国产美女搞黄色| 欧美成人a在线| 日韩午夜激情视频| 一区二区三区四区激情| 亚洲免费电影在线| 亚洲人成亚洲人成在线观看图片| 综合精品久久久| 日韩va亚洲va欧美va久久| 国产精一品亚洲二区在线视频| 99riav一区二区三区| 成人国产亚洲欧美成人综合网| av电影一区二区| 911精品国产一区二区在线| 国产精品美女视频| 久久se这里有精品| 欧洲精品一区二区| 精品国产免费一区二区三区四区 | 免费在线一区观看| 成人精品高清在线| 337p亚洲精品色噜噜| 26uuu国产在线精品一区二区| 国产亚洲成av人在线观看导航 | 欧美一级二级三级蜜桃| 亚洲欧洲日产国产综合网| 狠狠久久亚洲欧美| 色国产精品一区在线观看| 欧美日韩一二三| 欧美剧情片在线观看| 欧美激情在线一区二区三区| 日本一道高清亚洲日美韩| 色综合久久久久久久久| 国产精品天天摸av网| 精品国产电影一区二区| 欧美日韩视频在线一区二区 | 中文字幕巨乱亚洲| 一区二区视频免费在线观看|