一.下載,解壓
二.啓動服務器【先啓動zookeeper】
Kafka使用ZooKeeper,因此如果還沒有,請先啓動ZooKeeper服務器。可以使用kafka的腳本隨時來獲取快速且高效的單節點ZooKeeper實例。
啓動zookeeper:
啓動Kafka:
三.創建topic
用一個分區和一個副本創建一個名爲“ test1”的主題:
現在,運行list topic命令,可以看到該主題:
四.生產消息
Kafka帶有一個命令行客戶端,它將從文件或標準輸入中獲取輸入,並將其作爲消息發送到Kafka集羣。默認情況下,每行將作爲單獨的消息發送。
運行生產者,然後在控制檯中鍵入一些消息以發送到服務器。
五.消費消息
Kafka還有一個命令行使用者,它將消息轉儲到標準輸出。
如果上面的每個命令都在不同的終端上運行,那麼能夠在生產者終端中鍵入消息,並看到它們出現在消費者終端中。
生產者:
消費者:
六.僞集羣模式
對於Kafka來說,單個代理只是一個大小爲1的集羣,因此除了啓動更多的代理實例之外,沒有什麼太大的變化。但是,只是爲了感受一下,讓我們將集羣擴展到三個節點(仍然全部在本地計算機上)。
首先,我們爲每個代理創建一個配置文件(在Windows上,使用copy命令代替):
編輯這些新文件並設置以下屬性:
編輯內容如下:
broker.id屬性是集羣中每個節點的唯一且永久的名稱。我們只需要覆蓋端口和日誌目錄,這是因爲我們在同一臺計算機上運行它們,並且希望所有代理都不要試圖在同一端口上註冊或覆蓋彼此的數據。
已經有Zookeeper並啓動了單個節點,因此只需要啓動兩個新節點:
查看:
現在,創建一個具有三個複製因子的新主題:
查看新主題類型:
這是輸出的說明。第一行給出了所有分區的摘要,每一行都給出了有關一個分區的信息。由於該主題只有一個分區,因此只有一行。
- leader:負責給定節點分區的所有讀取和寫入操作。每個節點將成爲分區的隨機選擇部分的leader。
- replicas:該分區複製日誌的節點列表,無論它們是leader還是當前處於活動狀態。
- isr:“同步”副本的集合。這是副本列表的子集,當前仍處於活動狀態並追隨leader。
向新主題發佈一些消息:
使用這些消息:
測試一下容錯能力。server-1扮演領導者的角色,所以讓我們殺死它:
領導權已切換到關注者之一,並且節點1不再位於同步副本集中:
但是,即使最初進行寫操作的領導者已經下線,消息仍然可以使用: