分布式訊息系統,由linkedin使用scala編寫,用作linkedin的活動流(activity stream)和運營資料處理管道(pipeline)的基礎。具有高水平擴充套件和高吞吐量.當前由apache開源.
整個系統由生產者、broker server和消費者三部分組成,生產者和消費者由開發人員編寫,通過api連線到broker server進行資料操作
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天)
生產者生產者就是訊息的創造者,主要工作就是源源不斷的產生訊息,然後將其傳送給訊息佇列,生產者可以傳送各種訊息給訊息佇列
消費者消費者就是不斷地從訊息佇列當中獲取訊息進行處理
消費者組(consumer group)
組內必然可以有多個消費者,它們共享乙個公共的id,即group id。組內的所有消費者協調在一起來消費訂閱主題(subscribed topics)的所有分割槽(partition)。當然,每個分割槽只能由同乙個消費組內的乙個consumer來消費
步驟一:zookeeper集群搭建(
步驟二:kafka集群搭建
kafka入門基礎命令
kafka啟動命令 bin kafka server start.sh 啟動命令 daemon 後台啟動引數 config server.properties 配置檔案 kafka語法 檢視主題個數 命令 bin kafka topics.sh list zookeeper hadoop01 218...
Kafka入門學習 基礎
kafka是什麼 kafka是最初由linkedin公司開發,是乙個分布式 支援分割槽的 partition 多副本的 replica 基於zookeeper協調的分布式訊息系統,它的最大的特性就可以實時的處理大量資料以滿足各種需求場景 比如基於hadoop的批處理系統 低延遲的實時系統 storm...
Kafka入門 3 kafka基礎操作
建立乙個topic 主題 kafka中所有的訊息都是儲存在主題中,要生產訊息到kafka,首先必須要有乙個確定的主題。建立名為test的主題 bin kafka topics.sh create bootstrap server node1 9092 topic test 檢視目前kafka中的主題...