Kafka從搭建到使用

Kafka從搭建到使用

kafka簡介

Kafka是一款流行分布式消息分布訂閱系統(tǒng),除Kafka之外還有MQ、Redis等。我們可以把消息隊列視為一個管道,管道的兩端分別是消息生產(chǎn)者(producer)和消息消費者(consumer),消息生產(chǎn)者產(chǎn)生日志等消息后可以發(fā)送到管道中,這時消息隊列可以駐留在內(nèi)存或者磁盤上,直到消費者來把它讀走為止。

上述就是Kafka的一個概括,我們只需要了解一下Kafka的架構(gòu)和一些專業(yè)術(shù)語即可,下面就來介紹一下Kafka 中一些專業(yè)術(shù)語。

Producer:消息生產(chǎn)者,負責把產(chǎn)生的消息發(fā)送到Kafka服務(wù)器上。

Consumer:消息消費者,從Kafka服務(wù)器讀取消息。

Consumer Group:消費者群組,每個消息消費者可以劃分為一個特定的群組。

Topic:這是Kafka使用中非常重要的一個術(shù)語,它相當于消息的"身份標識",消息生產(chǎn)者產(chǎn)生消息時會給它貼上一個Topic標簽,當消息消費者需要讀取消息時,可以根據(jù)這個Topic讀取特定的數(shù)據(jù)。

Broker:Kafka集群中包含的服務(wù)器。

kafka配置

image-20221201132327741.png

然后解壓并且進入kafka的路徑下

tar xzf kafka_2.13-3.2.0.tgz
cd kafka_2.13-3.2.0

這里需要簡單的介紹一下ZooKeeper,它是一個開源的分布式協(xié)調(diào)框架,它可以將那些容易出錯的分布式一致性服務(wù)封裝起來,構(gòu)成一個高效、可靠、簡單易用的結(jié)構(gòu)提供給用戶使用。

之所以提到ZooKeeper是因為Kafka就是使用ZooKeeper作為協(xié)調(diào)框架,因為前面下載的壓縮包中已經(jīng)包含了ZooKeeper,因此不需要在單獨去下載它的安裝包。

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

啟動ZooKeeper服務(wù)之后再啟動Kafka服務(wù),

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

需要強調(diào)一下,config/server.properties是Kafka的配置文件,可以用于配置監(jiān)聽的host、port、broker等。

默認的ZooKeeper連接服務(wù)為localhost:2181,

# Zookeeper connection string (see zookeeper docs for details).
# This is a comma separated host:port pairs, each corresponding to a zk
# server. e.g. "127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002".
# You can also append an optional chroot string to the urls to specify the
# root directory for all kafka znodes.
zookeeper.connect=localhost:2181

另外,producer和consumer的監(jiān)聽端口為9092,如果需要更改server的host和port端口可以通過修改config/server.properties進行配置。

Kafka使用

命令行

命令行的使用方式相對簡單,通過前面的Kafka配置之后可以直接在命令行下進行使用。

1. 創(chuàng)建Topic

使用Kafka,我們首先需要創(chuàng)建一個Topic,這樣后續(xù)消息生產(chǎn)者和消息消費者才能針對性的發(fā)送和消費數(shù)據(jù),

> bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test(創(chuàng)建的topic名稱)

這樣我們就創(chuàng)建了一個名為test的Topic。

我們也可以通過命令來查看我們已經(jīng)創(chuàng)建的 Topic,

> bin/kafka-topics.sh --list --bootstrap-server localhost:9092

2. 發(fā)送消息

前面介紹Kafka專業(yè)術(shù)語中已經(jīng)闡述,Kafka使用過程中首先需要消息生產(chǎn)者發(fā)送消息,那么消費者才可以讀取到消息。

啟動一個終端A,執(zhí)行下面命令,

> bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
>hello world
>

當執(zhí)行producer腳本后,會出現(xiàn)消息輸入提示符,這是我們可以輸入消息(數(shù)據(jù)),然后它會發(fā)送到對應(yīng)的服務(wù)器(Broker)。

3. 消費消息

現(xiàn)在管道中已經(jīng)有了數(shù)據(jù),接下來我就可以使用消費者去讀取數(shù)據(jù)。

另外啟動一個終端B,執(zhí)行下面命令,

> bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
hello world

可以看到,消息消費者一直處于監(jiān)聽狀態(tài),每當在終端A輸入一條消息,終端B也會更新一條消息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容