<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    歡迎光臨郝學(xué)武的blog。

    kafka概念備忘

    Posted on 2014-01-08 11:58 陜西BOY 閱讀(389) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): kafka

    Kafka is a distributed, partitioned, replicated commit log service. 它提供了類(lèi)似于JMS的特性,但是在設(shè)計(jì)實(shí)現(xiàn)上完全不同,此外它并不是JMS規(guī)范的實(shí)現(xiàn).

        kafka對(duì)消息保存時(shí)根據(jù)Topic進(jìn)行歸類(lèi),發(fā)送消息者成為Producer,消息接收者成為Consumer;此外kafka集群有多個(gè)kafka實(shí)例組成,每個(gè)實(shí)例(server)稱(chēng)為broker.

        無(wú)論是kafka集群,還是producer和consumer都依賴(lài)于zookeeper來(lái)保證系統(tǒng)可用性以及保存一些meta信息.

     

    (摘自官網(wǎng)) 

        Topics/logs

        一個(gè)Topic可以認(rèn)為是一類(lèi)消息,每個(gè)topic將被分成多個(gè)partition(區(qū)),每個(gè)partition在存儲(chǔ)層面是append log文件.任何發(fā)布到此partition的消息都會(huì)直接追加到log文件的尾部,每條消息在文件中的位置稱(chēng)為offset(偏移量),offset為一個(gè)long型數(shù)字,它唯一的標(biāo)記一條消息.kafka并沒(méi)有提供其他額外的索引機(jī)制來(lái)存儲(chǔ)offset,因?yàn)樵趉afka中幾乎不允許對(duì)消息進(jìn)行"隨機(jī)讀-寫(xiě)".



    (摘自官網(wǎng)) 

        kafka和JMS實(shí)現(xiàn)(activeMQ)不同的是:即使消息被消費(fèi),消息仍然不會(huì)被立即刪除.日志文件將會(huì)根據(jù)broker中的配置要求,保留一定的時(shí)間之后刪除;比如log文件保留2天,那么兩天后,文件會(huì)被清除,無(wú)論其中的消息是否被消費(fèi).kafka通過(guò)這種簡(jiǎn)單的手段,來(lái)釋放磁盤(pán)空間,以及減少消息消費(fèi)之后對(duì)文件內(nèi)容改動(dòng)的磁盤(pán)IO開(kāi)支.

        對(duì)于consumer而言,它需要保存消費(fèi)消息的offset,對(duì)于offset的保存和使用,有consumer來(lái)控制;當(dāng)consumer正常消費(fèi)消息時(shí),offset將會(huì)"線性"的向前驅(qū)動(dòng),即消息將依次順序被消費(fèi).事實(shí)上consumer可以使用任意順序消費(fèi)消息,它只需要將offset重置為任意值..(offset將會(huì)保存在zookeeper中,參見(jiàn)下文)

        kafka集群幾乎不需要維護(hù)任何consumer和producer狀態(tài)信息,這些信息有zookeeper保存;因此producer和consumer的客戶(hù)端實(shí)現(xiàn)非常輕量級(jí),它們可以隨意離開(kāi),而不會(huì)對(duì)集群造成額外的影響.

        partitions的設(shè)計(jì)目的有多個(gè).最根本原因是kafka基于文件存儲(chǔ).通過(guò)分區(qū),可以將日志內(nèi)容分散到多個(gè)server上,來(lái)避免文件尺寸達(dá)到單機(jī)磁盤(pán)的上限,每個(gè)partiton都會(huì)被當(dāng)前server(kafka實(shí)例)保存;可以將一個(gè)topic切分多任意多個(gè)partitions,來(lái)消息保存/消費(fèi)的效率.此外越多的partitions意味著可以容納更多的consumer,有效提升并發(fā)消費(fèi)的能力.(具體原理參見(jiàn)下文).

        Distribution

        一個(gè)Topic的多個(gè)partitions,被分布在kafka集群中的多個(gè)server上;每個(gè)server(kafka實(shí)例)負(fù)責(zé)partitions中消息的讀寫(xiě)操作;此外kafka還可以配置partitions需要備份的個(gè)數(shù)(replicas),每個(gè)partition將會(huì)被備份到多臺(tái)機(jī)器上,以提高可用性.

        基于replicated方案,那么就意味著需要對(duì)多個(gè)備份進(jìn)行調(diào)度;每個(gè)partition都有一個(gè)server為"leader";leader負(fù)責(zé)所有的讀寫(xiě)操作,如果leader失效,那么將會(huì)有其他follower來(lái)接管(成為新的leader);follower只是單調(diào)的和leader跟進(jìn),同步消息即可..由此可見(jiàn)作為leader的server承載了全部的請(qǐng)求壓力,因此從集群的整體考慮,有多少個(gè)partitions就意味著有多少個(gè)"leader",kafka會(huì)將"leader"均衡的分散在每個(gè)實(shí)例上,來(lái)確保整體的性能穩(wěn)定.

        Producers

        Producer將消息發(fā)布到指定的Topic中,同時(shí)Producer也能決定將此消息歸屬于哪個(gè)partition;比如基于"round-robin"方式或者通過(guò)其他的一些算法等.

        Consumers

        本質(zhì)上kafka只支持Topic.每個(gè)consumer屬于一個(gè)consumer group;反過(guò)來(lái)說(shuō),每個(gè)group中可以有多個(gè)consumer.發(fā)送到Topic的消息,只會(huì)被訂閱此Topic的每個(gè)group中的一個(gè)consumer消費(fèi).

        如果所有的consumer都具有相同的group,這種情況和queue模式很像;消息將會(huì)在consumers之間負(fù)載均衡.

        如果所有的consumer都具有不同的group,那這就是"發(fā)布-訂閱";消息將會(huì)廣播給所有的消費(fèi)者.



    (摘自官網(wǎng)) 

        在kafka中,一個(gè)partition中的消息只會(huì)被group中的一個(gè)consumer消費(fèi);每個(gè)group中consumer消息消費(fèi)互相獨(dú)立;我們可以認(rèn)為一個(gè)group是一個(gè)"訂閱"者,一個(gè)Topic中的每個(gè)partions,只會(huì)被一個(gè)"訂閱者"中的一個(gè)consumer消費(fèi),不過(guò)一個(gè)consumer可以消費(fèi)多個(gè)partitions中的消息.kafka只能保證一個(gè)partition中的消息被某個(gè)consumer消費(fèi)時(shí),消息是順序的.事實(shí)上,從Topic角度來(lái)說(shuō),消息仍不是有序的.

        kafka的設(shè)計(jì)原理決定,對(duì)于一個(gè)topic,同一個(gè)group中不能有多于partitions個(gè)數(shù)的consumer同時(shí)消費(fèi),否則將意味著某些consumer將無(wú)法得到消息.

        Guarantees

        1) 發(fā)送到partitions中的消息將會(huì)按照它接收的順序追加到日志中

        2) 對(duì)于消費(fèi)者而言,它們消費(fèi)消息的順序和日志中消息順序一致.

        3) 如果Topic的"replication factor"為N,那么允許N-1個(gè)kafka實(shí)例失效.


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    posts - 17, comments - 65, trackbacks - 0, articles - 28

    Copyright © 陜西BOY

    主站蜘蛛池模板: 国产V亚洲V天堂无码久久久| 亚洲成a人片在线观看中文!!!| a级黄色毛片免费播放视频| 国产国拍亚洲精品mv在线观看 | 希望影院高清免费观看视频| 鲁死你资源站亚洲av| 亚洲VA中文字幕无码毛片| 美女视频黄是免费的网址| 成人免费网站视频www| 中文字幕亚洲综合精品一区| 午夜国产大片免费观看| 四虎国产精品永久免费网址| 亚洲AV性色在线观看| 亚洲AV福利天堂一区二区三| 在线观看人成视频免费| 久久久久久国产精品免费免费男同| 亚洲综合av一区二区三区| 国产亚洲精品va在线| 四虎影院免费在线播放| 久久久久久AV无码免费网站| 亚洲精品无码mⅴ在线观看 | 国产成人综合亚洲一区| 亚洲视频在线观看| 亚洲成a人片在线观看久| 久久99九九国产免费看小说| 4hu四虎免费影院www| 亚洲国产精品99久久久久久| 337p日本欧洲亚洲大胆精品555588| 免费v片在线观看品善网| 亚洲一区免费视频| 久久精品免费观看| 无人视频免费观看免费视频| 亚洲第一男人天堂| 亚洲国产精品久久久久网站| 亚洲精品成人网久久久久久| 色视频色露露永久免费观看| 999久久久免费精品国产| 四虎成人精品永久免费AV| 中文字幕免费在线看线人动作大片 | 精品熟女少妇av免费久久| 久久最新免费视频|