學習kafka教程(一)

2021-09-12 23:58:26 字數 3715 閱讀 8201

簡介

kafka是用於構建實時資料管道和流應用程式。具有橫向擴充套件,容錯,wicked fast(**快)等優點,並已在成千上萬家公司執行。

目標相關概念

producer:生產者,就是它來生產「叉燒包」的飯堂阿姨。

consumer:消費者,生產出來的「叉燒包」它來消費。

topic:你把它理解為標籤,生產者每生產出來乙個叉燒包就貼上乙個標籤(topic),消費者可不是誰生產的「叉燒包」都吃的,這樣不同的生產者生產出來的「叉燒包」,消費者就可以選擇性的「吃」了。

broker:就是蒸籠了。

所以整個過程可以如下形象的說明:

飯堂阿姨製作乙個叉燒包,消費者就消費乙個叉燒包。

1.假設消費者消費叉燒包的時候噎住了(系統宕機了),生產者還在生產叉燒包,那新生產的叉燒包就丟失了。

2.再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個叉燒包,消費者1秒鐘只能吃50個叉燒包,那要不了一會,消費者就吃不消了(訊息堵塞,最終導致系統超時),消費者拒絕再吃了,」叉燒包「又丟失了。

3.這個時候我們放個籃子在它們中間,生產出來的叉燒包都放到籃子裡,消費者去籃子裡拿叉燒包,這樣叉燒包就不會丟失了,都在籃子裡,而這個籃子就是」kafka「。

4.叉燒包其實就是「資料流」,系統之間的互動都是通過「資料流」來傳輸的(就是tcp、http什麼的),也稱為報文,也叫「訊息」。

5.訊息佇列滿了,其實就是籃子滿了,」叉燒包「 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。

所以說kafka == 籃子

安裝

2.2 配置:

(注:kafka_home為你配置的環境變數。hadoop01為你配置hosts)

編輯$kafka_home/config/下的server.properties檔案

server.properties

broker.id=0

#listeners=plaintext://:9092

num.partitions=1

zookeeper.connect=hadoop01:2181

2.3 多broker的kafka安裝配置

config/server-1.properties:

broker.id=1

listeners=plaintext://:9093

log.dir=/tmp/kafka-logs-1

config/server-2.properties:

broker.id=2

listeners=plaintext://:9094

log.dir=/tmp/kafka-logs-2

常用操作命令

啟動kafka

kafka-server-start.sh -daemon $kafka_home/config/server.properties
建立topic

bin/kafka-topics.sh --create --zookeeper hadoop01:2181 --replication-factor 1 --partitions 1 --topic hello_topic
檢視topic

./kafka-topics.sh --list --zookeeper hadoop01:2181
檢視指定topic的詳細資訊

kafka-topics.sh --describe --zookeeper hadoop01:2181
生產訊息

./kafka-console-producer.sh --broker-list hadoop01:9092 --topic hello_topic
消費訊息

./kafka-console-consumer.sh --bootstrap-server hadoop01:9092 --topic hello_topic --from-beginning
0.9.0版本的用下面的命令

./kafka-console-consumer.sh --zookeeper hadoop01:2181 --topic hello_topic --from-beginning
解析:--from-beginning:是從producer開始的位置開始拿資料的。

springboot操作kafka

特別注意(巨坑):kafka有很多版本的。各版本對應使用的springboot或者jar是不一樣。請參考spring官網的說明:

本文使用的是springboot1.5系列+0.10.0.x的

pom.xml

org.springframework.kafka

spring-kafka

1.0.5.release

生產者**主要是向kafka服務傳送訊息(生產訊息)。

/**

* 測試kafka生產者

*/@restcontroller

public class testkafkaproducercontroller

}

消費者**從主題(topic)中獲取訊息進行消費。

/**

* kafka消費者測試

*/@component

public class testconsumer

}

yml配置檔案主要是配置kafka的服務位址。

spring:

kafka:

bootstrap-servers: 120.79.***.x:9092

producer:

key-serializer: org.apache.kafka.common.serialization.stringserializer

value-serializer: org.apache.kafka.common.serialization.stringserializer

consumer:

group-id: test

enable-auto-commit: true

auto-commit-interval: 1000

key-deserializer: org.apache.kafka.common.serialization.stringdeserializer

value-deserializer: org.apache.kafka.common.serialization.stringdeserializer

kafka系列教程01 如何學習kafka

資料流,如訊息傳遞系統 高效並實時 資料流安全地在分布式集群中複製儲存 kafka是用於構建實時資料管道和流應用程式。具有橫向擴充套件,容錯,wicked fast 快 等優點,並已在成千上萬家公司執行。apache kafka是訊息中介軟體的一種,我發現很多人不知道訊息中介軟體是什麼,在開始學習之...

kafka學習 一 搭建

此次學習所用的kakfa版本較老,為17年的版本 kafka所用 kafka 2.11 0.10.1.1.tgz zookepper zookeeper 3.4.8.tar.gz jdk1.8 setup 二.安裝 檔案都放 opt下 tar zxvf zookeeper 3.4.8.tar.gz ...

kafka中文教程

本網翻譯整理apache kafka,提供整理apache kafka的完整學習文件。資料流,如訊息傳遞系統 高效並實時 資料流安全地在分布式集群中複製儲存 kafka是用於構建實時資料管道和流應用程式。具有橫向擴充套件,容錯,wicked fast 快 等優點,並已在成千上萬家公司執行。apach...