apache kafka_Apache Kafka简介
apache kafka
什么是Apache Kafka?
Apache Kafka是一個(gè)分布式流系統(tǒng),具有發(fā)布和訂閱記錄流的功能。 在另一方面,它是企業(yè)消息傳遞系統(tǒng)。 它是一個(gè)快速,水平可擴(kuò)展和容錯(cuò)的系統(tǒng)。 Kafka有四個(gè)核心API,
生產(chǎn)者API:
該API允許客戶端連接到集群中運(yùn)行的Kafka服務(wù)器,并將記錄流發(fā)布到一個(gè)或多個(gè)Kafka主題。
使用者API:
該API允許客戶端連接到集群中運(yùn)行的Kafka服務(wù)器,并使用來自一個(gè)或多個(gè)Kafka主題的記錄流。 卡夫卡的消費(fèi)者是直接從卡夫卡主題的消息。
流API:
通過使用來自一個(gè)或多個(gè)主題的流并將這些流生成到其他輸出主題,此API允許客戶端充當(dāng)流處理器。 這允許轉(zhuǎn)換輸入和輸出流。
連接器API:
該API允許編寫可重用的生產(chǎn)者和使用者代碼。 例如,如果我們要從任何RDBMS讀取數(shù)據(jù)以將數(shù)據(jù)發(fā)布到主題,并使用主題中的數(shù)據(jù)并將其寫入RDBMS。 使用連接器API,我們可以為各種數(shù)據(jù)源創(chuàng)建可重用的源連接器和接收器連接器組件。
Kafka用于什么用例?
Kafka用于以下用例,
訊息系統(tǒng):
Kafka用作企業(yè)消息傳遞系統(tǒng),用于分離源系統(tǒng)和目標(biāo)系統(tǒng)以交換數(shù)據(jù)。 與JMS相比,Kafka具有分區(qū)的高吞吐量和具有復(fù)制功能的容錯(cuò)能力。
網(wǎng)絡(luò)活動(dòng)跟蹤:
跟蹤網(wǎng)站上的用戶旅程事件,以進(jìn)行分析和脫機(jī)數(shù)據(jù)處理。
日志匯總:
處理來自各種系統(tǒng)的日志。 尤其是在具有微服務(wù)架構(gòu)的分布式環(huán)境中,該系統(tǒng)將系統(tǒng)部署在各種主機(jī)上。 我們需要匯總來自各種系統(tǒng)的日志,并在中央位置提供日志以進(jìn)行分析。 瀏覽有關(guān)使用Kafka的分布式日志記錄體系結(jié)構(gòu)的文章https://smarttechie.org/2017/07/31/distributed-logging-architecture-for-micro-services/
指標(biāo)收集器:
Kafka用于從各種系統(tǒng)和網(wǎng)絡(luò)收集指標(biāo)以進(jìn)行操作監(jiān)視。 Kafka指標(biāo)報(bào)告器可用于監(jiān)控工具,例如Ganglia , Graphite等…
關(guān)于此https://github.com/stealthly/metrics-kafka的一些參考
什么是經(jīng)紀(jì)人?
Kafka群集中的一個(gè)實(shí)例稱為代理。 在Kafka群集中,如果您連接到任何一個(gè)代理,您將可以訪問整個(gè)群集。 我們連接到訪問群集的代理實(shí)例也稱為引導(dǎo)服務(wù)器。 每個(gè)代理由集群中的數(shù)字ID標(biāo)識(shí)。 首先從Kafka集群開始,三個(gè)經(jīng)紀(jì)人是一個(gè)不錯(cuò)的選擇。 但是有些集群中有數(shù)百個(gè)經(jīng)紀(jì)人。
什么是主題?
主題是將記錄發(fā)布到的邏輯名稱。 在內(nèi)部,該主題分為多個(gè)發(fā)布數(shù)據(jù)的分區(qū)。 這些分區(qū)分布在群集中的代理之間。 例如,如果一個(gè)主題有三個(gè)分區(qū),群集中有3個(gè)代理,則每個(gè)代理都有一個(gè)分區(qū)。 要發(fā)布的分區(qū)數(shù)據(jù)僅附加偏移量增量。
以下是在使用分區(qū)時(shí)需要記住的幾點(diǎn)。
- 主題由其名稱標(biāo)識(shí)。 一個(gè)集群中可以有很多主題。
- 消息的順序保持在分區(qū)級(jí)別,而不是跨主題。
- 一旦寫入分區(qū)的數(shù)據(jù)不被覆蓋。 這稱為不變性。
- 分區(qū)中的消息與鍵,值和時(shí)間戳一起存儲(chǔ)。 Kafka確保將給定密鑰的消息發(fā)布到同一分區(qū)。
- 在Kafka群集中,每個(gè)分區(qū)都有一個(gè)領(lǐng)導(dǎo)者,該領(lǐng)導(dǎo)者將對(duì)該分區(qū)進(jìn)行讀/寫操作。
在上面的示例中,我創(chuàng)建了一個(gè)主題,其中包含三個(gè)具有復(fù)制因子3的分區(qū)。在這種情況下,因?yàn)榧壕哂?個(gè)代理,所以這三個(gè)分區(qū)是均勻分布的,每個(gè)分區(qū)的副本都復(fù)制到另外2個(gè)代理中。 由于復(fù)制因子為3,因此即使有2個(gè)代理發(fā)生故障,也不會(huì)丟失數(shù)據(jù)。 始終保持復(fù)制因子大于1且小于或等于集群中的代理數(shù)目。 創(chuàng)建主題的復(fù)制因子不能超過集群中代理的數(shù)量。
在上圖中,每個(gè)分區(qū)都有一個(gè)領(lǐng)導(dǎo)者(發(fā)光分區(qū)),其他同步副本(灰色分區(qū))是跟隨者。 對(duì)于分區(qū)0,broker-1是領(lǐng)導(dǎo)者,broker-2,broker-3是跟隨者。 對(duì)分區(qū)0的所有讀/寫都將轉(zhuǎn)到Broker-1,并且相同的內(nèi)容將被復(fù)制到Broker-2和Broker-3。
現(xiàn)在,讓我們按照以下步驟創(chuàng)建具有3個(gè)代理的Kafka集群。
第1步:
下載Apache Kafka最新版本。 在此示例中,我使用的是最新的1.0。 解壓縮文件夾并移到bin文件夾。 啟動(dòng)Zookeeper,這對(duì)于從Kafka集群開始至關(guān)重要。 Zookeeper是協(xié)調(diào)服務(wù),用于管理代理,對(duì)分區(qū)的領(lǐng)導(dǎo)者進(jìn)行選舉并在主題更改(刪除主題,創(chuàng)建主題等)或代理(添加代理,代理模具等)更改期間向Kafka發(fā)出警報(bào)。 在此示例中,我僅啟動(dòng)了一個(gè)Zookeeper實(shí)例。 在生產(chǎn)環(huán)境中,我們應(yīng)該有更多的Zookeeper實(shí)例來管理故障轉(zhuǎn)移。 如果沒有Zookeeper,Kafka群集將無法工作。
./zookeeper-server-start.sh ../config/zookeeper.properties第2步:
現(xiàn)在啟動(dòng)卡夫卡經(jīng)紀(jì)人。 在此示例中,我們將啟動(dòng)三個(gè)經(jīng)紀(jì)人。 轉(zhuǎn)到Kafka根目錄下的config文件夾,并將server.properties文件復(fù)制3次,并將其命名為server_1.properties,server_2.properties和server_3.properties。 在這些文件中更改以下屬性。
#####server_1.properties##### broker.id=1 listeners=PLAINTEXT://:9091 log.dirs=/tmp/kafka-logs-1#####server_2.properties###### broker.id=2 listeners=PLAINTEXT://:9092 log.dirs=/tmp/kafka-logs-2######server_3.properties##### broker.id=3 listeners=PLAINTEXT://:9093 log.dirs=/tmp/kafka-logs-3M現(xiàn)在,使用以下命令運(yùn)行3個(gè)代理。
###Start Broker 1 ####### ./kafka-server-start.sh ../config/server_1.properties###Start Broker 2 ####### ./kafka-server-start.sh ../config/server_2.properties###Start Broker 3 ####### ./kafka-server-start.sh ../config/server_3.properties第三步:
使用以下命令創(chuàng)建主題。
./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 3 --partitions 3 --topic first_topic第4步:
通過使用Kafka控制臺(tái)生產(chǎn)者,為上一步中創(chuàng)建的主題生成一些消息。 對(duì)于控制臺(tái)生產(chǎn)商,請(qǐng)?zhí)峒叭魏沃虚g商地址。 這將是引導(dǎo)服務(wù)器,用于訪問整個(gè)群集。
./kafka-console-producer.sh --broker-list localhost:9091 --topic first_topic >First message >Second message >Third message >Fourth message >步驟5:
使用Kafka控制臺(tái)使用者使用消息。 對(duì)于Kafka消費(fèi)者,請(qǐng)?zhí)峒叭魏我粋€(gè)代理地址作為引導(dǎo)服務(wù)器。 請(qǐng)記住,在閱讀消息時(shí),您可能看不到命令??。 由于順序是在分區(qū)級(jí)別而不是主題級(jí)別維護(hù)的。
./kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic first_topic --from-beginning如果需要,可以使用以下命令描述該主題以查看分區(qū)的分布方式以及每個(gè)分區(qū)的領(lǐng)導(dǎo)者。
./kafka-topics.sh --describe --zookeeper localhost:2181 --topic first_topic#### The Result for the above command##### Topic:first_topic PartitionCount:3 ReplicationFactor:3 Configs:Topic: first_topic Partition: 0 Leader: 1 Replicas: 1,2,3 Isr: 1,2,3Topic: first_topic Partition: 1 Leader: 2 Replicas: 2,3,1 Isr: 2,3,1Topic: first_topic Partition: 2 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2在上面的描述中,broker-1是分區(qū):0的領(lǐng)導(dǎo)者,broker-1,broker-2和broker-3具有每個(gè)分區(qū)的副本。
在下一篇文章中,我們將看到生產(chǎn)者和消費(fèi)者JAVA API。 直到那時(shí), 快樂消息!!!
翻譯自: https://www.javacodegeeks.com/2017/11/introduction-apache-kafka.html
apache kafka
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的apache kafka_Apache Kafka简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 拯救者设置截图快捷键(拯救者快捷按键)
- 下一篇: 你的电脑卡么电脑卡了吗