一、常見術語
- broker:kafka集羣包括一個或多個服務器,這種服務器叫做broker。broker接受來自生產者的消息,爲消息設置偏移量,並提交消息到磁盤保存。broker爲消費者提供服務,對讀取分區的請求作出相應,返回已經提交到磁盤上的信息。
- topic(主題):每條發佈到kafka的消息都有一個類別,這個類別叫做topic。topic就好比數據庫的表或者文件系統中的文件夾。一個主題可以分爲多個分區,一個分區就是一個提交日誌。消息以追加的方式寫入分區,然後以先入先出的順序讀取。注意,由於一個主題可以多個分區,因此無法在整個主題範圍內保證消息的順序,但可以保證消息在單個分區內的順序。其實就是隊列存儲。
- message(消息):kafka的數據單元。
- 批次:就是一組消息,這些消息屬於同一個主題和分區。爲了提高效率,消息被分批次寫入kafka。
- partition(分區):物理上的概念,一個topic通常有多個partition,類似隊列。
- offset(偏移量):一種元數據,它是一個不斷遞增的整數值,在創建消息時,kafka會把它添加到消息裏。kafka爲每條在分區的消息保存這個offset,這也是消費者在分區的位置。比如一個偏移量爲10的消費者,表示它已經消費了0-9偏移量的消息,下一個要消費的消息是偏移量爲10的。
- producer(生產者):消息的生產者,負責發送指定topic的消息到broker。默認情況下把消息均衡地分佈到主題的所有分區上。
- consumer(消費者):消息讀取客戶端,通過訂閱一組topic的消息從broker拉取消息
- consumer group(消費者羣組):消費者是消費者羣組的一部分,就是說,會有一個或者多個消費者共同讀取一個topic。羣組保證每個分區只能被一個消費者使用。可以爲消費者指定group name,若不指定則屬於默認的group。
二、啓動zookeeper
bin/zookeeper-server-start.sh config/zookeeper.properties &
三、啓動kafka
bin/kafka-server-start.sh config/server.properties
四、kafka生產者
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_topic
producer參數:
參數 | 值類型 | 說明 | 有效值 |
--bootstrap-server | String |
要連接的服務器(kafka_2.12-2.5.0版本後加入的) 必需(除非指定--broker-list) |
形如:host1:prot1,host2:prot2 |
--topic | String | (必需)接收消息的主題名稱 | |
--broker-list | String | (kafka_2.12-2.5.0版本前)要連接的服務器 | 形如:host1:prot1,host2:prot2 |
--batch-size | Integer | 單個批處理中發送的消息數 | 200(默認值) |
--compression-codec | String | 壓縮編解碼器 | none、gzip(默認值)snappy、lz4、zstd |
--max-block-ms | Long | 在發送請求期間,生產者將阻止的最長時間 | 60000(默認值) |
--max-memory-bytes | Long | 生產者用來緩衝等待發送到服務器的總內存 | 33554432(默認值) |
--max-partition-memory-bytes | Long | 爲分區分配的緩衝區大小 | 16384 |
--message-send-max-retries | Integer | 最大的重試發送次數 | 3 |
--metadata-expiry-ms | Long | 強制更新元數據的時間閾值(ms) | 300000 |
--producer-property | String | 將自定義屬性傳遞給生成器的機制 | 形如:key=value |
--producer.config | String |
生產者配置屬性文件 [--producer-property]優先於此配置 |
配置文件完整路徑 |
--property | String | 自定義消息讀取器 |
parse.key=true|false key.separator=<key.separator> ignore.error=true|false |
--request-required-acks | String | 生產者請求的確認方式 | 0、1(默認值)、all |
--request-timeout-ms | Integer | 生產者請求的確認超時時間 | 1500(默認值) |
--retry-backoff-ms | Integer | 生產者重試前,刷新元數據的等待時間閾值 | 100(默認值) |
--socket-buffer-size | Integer | TCP接收緩衝大小 | 102400(默認值) |
--timeout | Integer | 消息排隊異步等待處理的時間閾值 | 1000(默認值) |
--sync | 同步發送消息 | ||
--version |
顯示 Kafka 版本 不配合其他參數時,顯示爲本地Kafka版本 |
||
--help | 打印幫助信息 |
五、kafka消費者
bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test_topic --from-beginning
consumer參數:
參數 | 值類型 | 說明 | 有效值 |
--topic | string | 被消費的topic | |
--whitelist | string | 正則表達式,指定要包含以供使用的主題的白名單 | |
--partition | integer | 指定分區 除非指定’–offset’,否則從分區結束(latest)開始消費 | |
--offset | string | 執行消費的起始offset位置 默認值:latest | latest earliest <offset> |
--consumer-property | string | 將用戶定義的屬性以key=value的形式傳遞給使用者 | |
--consumer.config | string |
消費者配置屬性文件 請注意,[consumer-property]優先於此配置 |
|
--formatter | string |
用於格式化kafka消息以供顯示的類的名稱 默認值:kafka.tools.DefaultMessageFormatter |
kafka.tools.DefaultMessageFormatter kafka.tools.LoggingMessageFormatter kafka.tools.NoOpMessageFormatter kafka.tools.ChecksumMessageFormatter |
--property | string | 初始化消息格式化程序的屬性 |
print.timestamp=true|false print.key=true|false print.value=true|false key.separator=<key.separator> line.separator=<line.separator> key.deserializer=<key.deserializer> value.deserializer=<value.deserializer> |
--from-beginning | 從存在的最早消息開始,而不是從最新消息開始 | ||
--max-messages | integer | 消費的最大數據量,若不指定,則持續消費下去 | |
--timeout-ms | integer | 在指定時間間隔內沒有消息可用時退出 | |
--skip-message-on-error | 如果處理消息時出錯,請跳過它而不是暫停 | ||
--bootstrap-server | string | 必需(除非使用舊版本的消費者),要連接的服務器 | |
--key-deserializer | string | ||
--value-deserializer | string | ||
--enable-systest-events | 除記錄消費的消息外,還記錄消費者的生命週期 (用於系統測試) | ||
--isolation-level | string |
設置爲read_committed以過濾掉未提交的事務性消息 設置爲read_uncommitted以讀取所有消息 默認值:read_uncommitted |
|
--group | string | 指定消費者所屬組的ID | |
--blacklist | string | 要從消費中排除的主題黑名單 | |
--csv-reporter-enabled | 如果設置,將啓用csv metrics報告器 | ||
--delete-consumer-offsets | 如果指定,則啓動時刪除zookeeper中的消費者信息 | ||
--metrics-dir | string | 輸出csv度量值 需與[csv-reporter-enable]配合使用 | |
--zookeeper | string |
必需(僅當使用舊的使用者時)連接zookeeper的字符串。 可以給出多個URL以允許故障轉移 |
參考:https://blog.csdn.net/qq_29116427/article/details/80206125