日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

漫游Kafka实现篇之分布式

發(fā)布時間:2024/4/11 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 漫游Kafka实现篇之分布式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文地址:http://blog.csdn.net/honglei915/article/details/37932819

Zookeeper節(jié)點標記

當路徑中的元素包括在方括號里比如[xyz],則表示xyz表示的值是不固定的,每個可能的值都有一個Zookeeper節(jié)點。比如/topics/[topic]表示每個topic名稱對應/topics的一個子目錄。也可以用類似[0...5]表示一個數(shù)值范圍來表示含有子目錄0,1,2,3,4的目錄。箭頭->表示znode的節(jié)點含有某個內容,比如/hello->word表示一個含有“world”的節(jié)點。

/brokers/ids/[0...N] --> host:port (ephemeral node)

表示一個broker節(jié)點的列表,每個節(jié)點提供了一個供consumers識別的broker id,這個id必須在配置文件中指明。啟動時,broker節(jié)點會用紙的id在/brokers/ids下給自己注冊一個znode,broker可以被轉移到另外一臺機器上,只要id不變就不會影響consumers.如果試圖注冊一個已經(jīng)存在的broker id(比如兩個節(jié)點配置了同樣的id)將會產(chǎn)生錯誤。

Broker注冊的Zookeeper節(jié)點是臨時節(jié)點,如果一個broker節(jié)點關閉了,注冊也就失效了,并通知consumer這個節(jié)點不再活動了。

Consumers和Consumer組

Consumers也在Zookeeper中注冊自己,目的是在消費消息時進行負載均衡,并跟蹤消費的每個分區(qū)的offset.

Consumers可以組成一個組,共同消費一個copic,組中的每個consumer共享一個組id.組id配置在consumer的配置參數(shù)中。可以參考前面文章的consumer實例。

組中的consumer會均勻分配topic的分區(qū),每個分區(qū)只會被組里的一個consumer消費。

Consumer Id注冊

除了共享的組id,每個consumer還會沒分配一個臨時的唯一的consumer_id,格式為:hostname:uuid。consumer_id被注冊到以下的目錄中:

/consumers/[group_id]/ids/[consumer_id] --> {"topic1": #streams, ..., "topicN": #streams} (ephemeral node) 每個consumer都注冊到組的下面,并用consumer_id創(chuàng)建一個znode.znode的值包含一個<topic, #streams>.的map.Znode節(jié)點是臨時的,如果consumer線程結束了,這個節(jié)點就會消失。

Consumer Offset 跟蹤

Consumer跟蹤它在每個分區(qū)中消費的最大的offset,并保存在以下的Zookeeper目錄中:

/consumers/[group_id]/offsets/[topic]/[broker_id-partition_id] --> offset_counter_value ((persistent node)

分區(qū)歸屬注冊

每個分區(qū)只會被組中的一個consumer消費,consumer在消費之前必須建立和分配的分區(qū)的歸屬關系,把它的consumerid寫入broker分區(qū)下的一個臨時節(jié)點。

/consumers/[group_id]/owners/[topic]/[broker_id-partition_id] --> consumer_node_id (ephemeral node)

Broker節(jié)點注冊

Broker節(jié)點基本是獨立的,只需發(fā)布自己擁有的信息。當一個節(jié)點加入,它把自己注冊到broker node目錄中,并寫入host name和port的信息到broker topic記錄中。Broker也要注冊一個topic列表,新的topic會被動態(tài)的注冊。

Consumer注冊規(guī)則

當一個consumer啟東時,它將遵循以下步驟:

  • 把自己注冊到組下面的consumer id記錄中。
  • 注冊一個監(jiān)聽器,監(jiān)聽consumer id記錄的的“變更(新的consumer加入或老的退出)”,每次“變更”都會觸發(fā)一次組中各consumer之間的再平衡。
  • 注冊一個監(jiān)聽器,監(jiān)聽broker id記錄的“變更(新的broker加入或者老的退出)”,每次變更都會觸發(fā)一次所有組中所有sonsumers之間的再平衡。
  • 如果consumer消息流是使用了topic過濾器,也需要注冊一個監(jiān)聽器去監(jiān)聽broker topic記錄的變更(新的topic加入)。每次變更都會觸發(fā)一次對所有的topics的重新評估以決定是否符合這個過濾器。一個新的copic會觸發(fā)一次在所有consumers中的再平衡.
  • 在它所在的組進行一次再平衡。
  • Kafka視頻教程同步首發(fā),歡迎觀看! 超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的漫游Kafka实现篇之分布式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。