Kafka簡介,安裝及簡單的操作

2021-10-25 00:18:36 字數 3273 閱讀 3222

kafka的介紹

kafka 是分布式發布-訂閱訊息系統,即,kafka是一種分布式的訊息佇列工具。

kafka特點

a.高吞吐量

kafka每秒可以生產約25萬訊息(50mb),每秒可以處理55萬訊息(110mb)

b.持久化資料儲存

可進行持久化操作。將訊息持久化到磁碟,按順序讀寫。據測試按順序磁碟讀寫比隨機記憶體寫還要快。

c.分布式系統易於擴充套件

所有的producer、broker和consumer都會有多個,均為分布式。無需停機就可以新增機器。

d.客戶端狀態維護

訊息被處理的狀態是在consumer端維護,而不是由server端維護。減輕伺服器端的壓力,為客戶端會話管理提供了更好的靈活性。

描述架構之前我還想再鋪墊一下使用的步驟。

訊息寫入到kafka是需要通過生產者端的,生產者端可以是flume可以是nginx也可以是我們自己呼叫kafkaapi手寫生產者,消費者也是如此。

但是無論是什麼生產者**,都需要在kafka中建立對應的topic(主題)指定patition(分割槽:分割槽的存在是為了提高併發能力,分割槽數的多少由消費者多少來定義,最好結合sparkrdd數或者,如果需求是將同乙個客戶端的資料存入乙個檔案,就可以將分割槽與檔案一一對應,存入hdfs或被spark消費或闖入其他機器。曾經面試被問過)

如果有不理解的自己可以嘗試畫圖並動手操作一下。

有了以上介紹以後就直接進入kafka架構:

看架構圖還是需要明白乙個概念就是kafka中的leader與follower

在kafka集群中每個分割槽有若干副本,這些副本分布式的存放在不停伺服器上,其中有乙個稱為leader,leader負責讀寫操作,其他的副本就只是同步,選舉leader跟zookepeer不一樣,有乙個isr區域,可以想象成為奴隸場(畢竟幹活的都是他),只要isr區域中有機器活著,leader就會從中產生,另外kafka 0.8.*使用的是選擇第乙個活過來的replica,雖然可能會丟失資料。

訊息生產者,發布訊息到 kafka 集群的終端或服務。

2.broker:

kafka 集群中包含的伺服器。broker (經紀人,消費**服務)

3.topic:

每條發布到 kafka 集群的訊息屬於的類別,即 kafka 是面向 topic 的。

4.partition:

partition 是物理上的概念,每個 topic 包含乙個或多個 partition。kafka 分配的單位是 partition。

5.consumer:

從 kafka 集群中消費訊息的終端或服務。

6.consumer group:

high-level consumer api 中,每個 consumer 都屬於乙個 consumer group,每條訊息只能被 consumer group 中的乙個 consumer 消費,但可以被多個 consumer group 消費。

即組間資料是共享的,組內資料是競爭的。

7.replica:

partition 的副本,保障 partition 的高可用。

8.leader:

replica 中的乙個角色, producer 和 consumer 只跟 leader 互動。

9.follower:

replica 中的乙個角色,從 leader 中複製資料。

10.controller:

kafka 集群中的其中乙個伺服器,用來進行 leader election 以及 各種 failover。

11.zookeeper:

kafka 通過 zookeeper 來儲存集群的 meta 資訊。

訊息流程:

1:producer 先從 zookeeper 的 「/brokers/…/state」 節點找到該 partition 的 leader

2:producer 將訊息傳送給該 leader

3:leader 將訊息寫入本地 log

4:followers 從 leader pull 訊息,寫入本地 log 後 leader 傳送 ack

5:leader 收到所有 isr 中的 replica 的 ack 後,增加 hw(high watermark,最後 commit 的 offset) 並向 producer 傳送 ack。

isr指的是:比如有三個副本 ,編號是① ② ③ ,其中② 是leader ① ③是follower。假設在資料同步過程中,①跟上leader,但是③出現故障或沒有及時同步,則① ②是乙個isr,而③不是isr成員。後期在leader選舉時,會用到isr機制。會優先從isr中選擇leader

安裝kafka

export kafka_home=

/opt/kafka

export path=$path:$kafka_home/bin

環境變數生效:

source /etc/profile

修改kafka配置檔案(在kakfa安裝目錄下的config目錄下)

vim server.properties

#broker 的編號,如果集群中有多個broker,則每個broker 的編號要設定的不同

broker.id=

0#對外提供的服務入口位址

listeners=plaintext:

//localhost:

9092

# 存放訊息的日誌檔案

log.dirs=

/tmp/kafka-logs/

# kafka所需要的zookeeper集群位址

zookeeper.connect=localhost:

2181

/kafka

4: 啟動kafka(在kakfa安裝目錄下)

控制台模式:

bin/kafka-server-start.sh config/server.properties

後台執行模式:

bin/kafka-server-start.sh -daemon config/server.properties

kafka建立&檢視topic,生產&消費指定topic訊息

Git 簡介及簡單操作

一 git是什麼 git 是乙個開源的分布式版本控制系統,用於敏捷高效地處理任何或小或大的專案。git 是 linus torvalds 為了幫助管理 linux 核心開發而開發的乙個開放原始碼的版本控制軟體。git 與常用的版本控制工具 cvs,subversion 等不同,它採用了分布式版本庫的...

KAFKA簡單操作

1.建立乙個topic,3個分割槽和兩個副本 redis node1 kafka 2.12 2.2.0 bin kafka topics.sh create zookeeper node1 2181 replication factor 2 partitions 3 topic test 2.檢視t...

Rust 安裝及簡單操作

官方文件有安裝說明 終端執行 curl proto https tlsv1.2 ssf sh顯示如下,按1回車 default host triple x86 64 unknown linux gnu default toolchain stable default profile default ...