天天看點

kafka叢集配置與測試

剛接觸一些Apache Kafka的内容,用了兩天時間研究了一下,僅以此文做相關記錄,以供學習交流。

 概念:

kafka依賴的項:

1. 硬體上,kafka利用線性存儲來進行硬碟直接讀寫。

2. kafka沒有使用記憶體作為緩存。

3. 用zero-copy。

4. Gzip和Snappy壓縮,

5. kafka對事務處理比較弱,但是message分發上還是做了一定的政策來保證資料遞送的準确性的。

kafka關于存儲的幾個概念

1. Partition:同一個topic下可以設定多個partition,目的是為了提高并行處理的能力。可以将同一個topic下的message存儲到不同的paritition下。

2. Offset:kafka的存儲檔案都是按照offset.kafka來命名,用offset做名字的好處是友善查找。

在分布式方面:

1. broker的部署是沒有主從結構的,每個節點都是同等的,節點的增減和減少都不需要改變任何配置。

2. producer和consumer通過zookeeper去發現topic,并通過zookeeper來協調生産和消費的過程。

3. producer、consumer和broker均采用TCP連接配接,通信基于NIO實作。并且Producer和consumer能自動檢測broker的增加和減少。

克隆出三台虛拟機,我這三台虛拟機的ip分别為

192.168.128.129

192.168.128.132

192.168.128.133

在129這個伺服器上找到 kafka目錄/config/server.properties檔案,做如下修改

這裡隻用到了一個zookeeper,并部署到了129上,沒有用叢集,當然也可以部署到其他機器上。

132上的kafka配置

133上的kafka配置

在129上啟動zookeeper伺服器

 啟動129,132,133上的kafka服務

 在任意機器上建一個topic,因為有三個kafka服務,是以這裡replication-factor設為3

 檢視topic,此時的leader kafka為129,repicas:叢集裡有三個kafka,Isr:正常使用的kafka

 在133這台機器上開啟一個producer,往132這個kafka發消息

 停掉132的kafka,再次檢視topics,此時可用的Isr為129和133,leader依然為129,因為129的kafka沒有被停過,是以沒有重新選舉leader

 在129上開啟一個consumer

自此,發現停掉了132,依然能通過zookeeper從129和133的kafka上收到發往132的消息。

kafka叢集測試通過

繼續閱讀