kafka入門基礎

一:基本概念

  分佈式消息系統,由linkedin使用scala編寫,用作LinkedIn的活動流(Activity Stream)和運營數據處理管道(Pipeline)的基礎。具有高水平擴展和高吞吐量.當前由apache開源.
  整個系統由生產者、Broker Server和消費者三部分組成,生產者和消費者由開發人員編寫,通過API連接到Broker Server進行數據操作
  1. topic和partition
    topic是Kafka消息的類別,這是邏輯上的概念,用來區分、隔離不同的消息數據,屏蔽了底層複雜的存儲方式。對於大多數人來說,在開發的時候只需要關注數據寫入到了哪個topic、從哪個topic取出數據。 $nbsp;topic是Kafka消息的類別,這是邏輯上的概念,用來區分、隔離不同的消息數據,屏蔽了底層複雜的存儲方式。對於大多數人來說,在開發的時候只需要關注數據寫入到了哪個topic、從哪個topic取出數據。
    partition是Kafka下數據存儲的基本單元,是物理概念,一個topic可以配置多個分區.同一個topic的數據,會被分散的存儲到多個partition中,這些partition可以在同一臺機器上,也可以是在多臺機器上.
    這樣有利於水平擴展,避免單臺機器在磁盤空間和性能上的限制,同時可以通過複製來增加數據冗餘性,提高容災能力。爲了做到均勻分佈,通常partition的數量通常是Broker Server數量的整數倍
    例如:有一個topic稱爲testtopic,配置了三個分區partitionA,partitionB,partitionC
    分別在三臺集羣節點上,保證擴展性,但是每一個分區都可以配置副本分佈在集羣上保證可用性
    每個partition都是一個有序並且不可變的消息記錄集合。當新的數據寫入時,就被追加到partition的末尾。在每個partition中,每條消息都會被分配一個順序的唯一標識,這個標識被稱爲offset,即偏移量。注意,Kafka只保證在同一個partition內部消息是有序的,在不同partition之間,並不能保證消息有序
    Kafka可以配置一個保留期限,用來標識日誌會在Kafka集羣內保留多長時間。Kafka集羣會保留在保留期限內所有被髮布的消息,不管這些消息是否被消費過。比如保留期限設置爲兩天,那麼數據被髮布到Kafka集羣的兩天以內,所有的這些數據都可以被消費。當超過兩天,這些數據將會被清空,以便爲後續的數據騰出空間。由於Kafka會將數據進行持久化存儲(即寫入到硬盤上),所以保留的數據大小可以設置爲一個比較大的值
    server.properties文件當中log.retention.hours=168(7天)

  2. 生產者
    生產者就是消息的創造者,主要工作就是源源不斷的產生消息,然後將其發送給消息隊列,生產者可以發送各種消息給消息隊列

  3. 消費者
    消費者就是不斷地從消息隊列當中獲取消息進行處理

  4. 消費者組(Consumer Group)
    組內必然可以有多個消費者,它們共享一個公共的ID,即group ID。組內的所有消費者協調在一起來消費訂閱主題(subscribed topics)的所有分區(partition)。當然,每個分區只能由同一個消費組內的一個consumer來消費

    • consumer group下可以有一個或多個consumer instance,consumer instance可以是一個進程,也可以是一個線程
    • group.id是一個字符串,唯一標識一個consumer group
    • consumer group下訂閱的topic下的每個分區只能分配給某個group下的一個consumer(當然該分區還可以被分配給其他group)

二:安裝kafka

步驟一:Zookeeper集羣搭建(https://blog.csdn.net/catherine_2018/article/details/85332520)
步驟二:kafka集羣搭建
https://www.cnblogs.com/luotianshuai/p/5206662.html

三:參考

https://www.jianshu.com/p/97011dab6c56
https://blog.csdn.net/summerZBH123/article/details/81449687
https://blog.csdn.net/weixin_37352094/article/details/80500202
https://www.cnblogs.com/jaycekon/p/6220200.html
https://www.cnblogs.com/luotianshuai/p/5206662.html
https://www.cnblogs.com/jxwch/p/6554237.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章