av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

牢記這三種方法!即便沒有Zookeeper也能運(yùn)行Kafka

牢記這三種方法!即便沒有Zookeeper也能運(yùn)行Kafka

原創(chuàng)
作者: 崔皓 2022-01-11 08:00:00

云計(jì)算

Kafka 從 Kafka 2.8 開始,在沒有 Zookeeper 的情況下也可以運(yùn)行 Kafka 集群。本文將介紹三種方法,它們可以在使用容器單節(jié)點(diǎn)集群的情況下運(yùn)行Kafka。

???

【51CTO.com原創(chuàng)稿件】從 Kafka 2.8 開始,在沒有 Zookeeper 的情況下也可以運(yùn)行 Kafka 集群。本文將介紹三種方法,它們可以在使用容器單節(jié)點(diǎn)集群的情況下運(yùn)行Kafka。

Apache Zookeeper作為Kafka的依賴項(xiàng)一直用來管理Apache Kafka的元數(shù)據(jù)。值得慶幸的是從Kafka 2.8 版本開始,就可以在沒有 Zookeeper 的情況下運(yùn)行 Kafka 集群了。下面就給大家介紹使用容器單節(jié)點(diǎn)集群的三種簡(jiǎn)單方法。

Control plane(控制面)和data plane(數(shù)據(jù)面)

Apache Kafka 為其集群實(shí)現(xiàn)了獨(dú)立的control plane(控制面)和data plane(數(shù)據(jù)面)。Control plane用來管理集群,跟蹤哪些brokers(代理)處于活動(dòng)狀態(tài),并在set(集合)更改時(shí)采取對(duì)應(yīng)的行動(dòng)。同時(shí),data plane(數(shù)據(jù)面)需要處理producer(生產(chǎn)者)和consumer(消費(fèi)者)及其兩者產(chǎn)生的記錄信息。在之前的Kafka 版本中,Zookeeper 是實(shí)現(xiàn)Control plane功能的主要集群組件。

經(jīng)過幾年的努力,Kafka實(shí)現(xiàn)了Control plane的第一版功能,我們把此次更新稱為KIP-500。其中 Apache Kafka Raft(也稱為 KRaft)是為取代 Zookeeper 而引入的新共識(shí)協(xié)議。brokers可以作為仲裁控制器的角色來管理集群Control plane(控制面)。此更改簡(jiǎn)化了集群部署、監(jiān)控和管理等功能。新的 KRaft 控制器可以在 Apache Kafka 2.8中體驗(yàn)到。

容器化單節(jié)點(diǎn)

Apache Kafka的強(qiáng)項(xiàng)是消息處理機(jī)制的水平擴(kuò)展和管理高吞吐量的消息,這也是一直推動(dòng)Kafka發(fā)展的源動(dòng)力。正因?yàn)槿绱?,需要在生產(chǎn)環(huán)境的Kafka集群中使用多個(gè)broker完成上述功能。為了簡(jiǎn)單和快速入門今天的知識(shí)點(diǎn),這里會(huì)從單節(jié)點(diǎn)集群切入給大家介紹Kafaka是如何進(jìn)行進(jìn)群管理的。

本文會(huì)使用Strimzi容器來包含所需要的應(yīng)用環(huán)境。Strimzi 是Cloud Native Computing Foundation項(xiàng)目成員,它讓Apache Kafka在Kubernetes 運(yùn)行起來更加從容,同時(shí)還提供了一套成熟的操作集合和容器鏡像。

在本文中,我們將通過Quay Container Registry 發(fā)布和應(yīng)用 Apache Kafka 2.8.1 鏡像。

Docker 或 Podman

首先需要在同一實(shí)例中運(yùn)行具有代理和控制器角色的單個(gè)容器。安裝Docker或Podman并執(zhí)行以下命令:

docker run -it --name kafka-zkless -p 9092:9092 -e LOG_DIR=/tmp/logs quay.io/strimzi/kafka:latest-kafka-2.8.1-amd64 /bin/sh -c 'export CLUSTER_ID=$(bin/kafka-storage.sh random-uuid) && bin/kafka-storage.sh format -t $CLUSTER_ID -c config/kraft/server.properties && bin/kafka-server-start.sh config/kraft/server.properties' 

上面的命令啟動(dòng)一個(gè)名為“kafka-zkless”的容器并暴露Kafka的端口 9092。我們覆蓋entry point(入口點(diǎn))的信息,這里包括三個(gè)方面的工作。

第一、設(shè)置環(huán)境變量,通過UUID設(shè)置集群ID。

第二、通過執(zhí)行`kafka-storage.sh`腳本來格式化存儲(chǔ)目錄。

第三、使用 KRaft 配置啟動(dòng) Kafka 服務(wù)器。

同時(shí),可以使用標(biāo)準(zhǔn)的 Kafka 工具(如kcat:以前稱為 kafkacat)連接到broker生成和使用相關(guān)記錄。

Docker Compose

您可以使用Compose 規(guī)范來定義您的組件。如圖 1 所示, docker-compose yaml 文件的示例:

???

圖1

從圖中可以看出通過container_name定義容器名稱,image定義容器鏡像,其中command的部分是要執(zhí)行的命令。由于該命令過長(zhǎng)將其分成兩行解釋(實(shí)際上是一行,這里人為加入了回車為的是方便大家閱讀),上面的一行和Docker中的命令一致,包括集群ID定義、格式化存儲(chǔ)目錄以及啟動(dòng)Kafaka服務(wù)器的部分。下面一行主要是重寫了advertised中的listeners、security.protocol.map 以及l(fā)isteners的信息。接著就是定義ports 端口為9092,在environment中定義了需要在命令行中重寫的三類信息:KAFKA_ADVERTISED_LISTENERS 對(duì)應(yīng)advertised中的listeners;KAFKA_LISTENER_SECURITY_PROTOCOL_MAP對(duì)應(yīng)security.protocol.map;KAFKA_LISTENERS對(duì)應(yīng)listeners的信息。

可以通過如下命令執(zhí)行上述示例:

docker-compose up -d 

本例會(huì)公開主機(jī)9092端口,如果需要在更廣泛的組合部署中訪問它,可以將其修改為kafka:29092,避免與其他端口沖突。

Kubernetes 部署

如果習(xí)慣使用Kubernetes,您可以如圖2 所示的部署描述:

???

圖2

如圖2 所示,我們關(guān)注containers節(jié)點(diǎn)下面的內(nèi)容,容器的名字為zkless-kafka,通過image定義了容器鏡像,在command中定義容器啟動(dòng)時(shí)候的命令。

和Docker一樣由于該命令過長(zhǎng)將其分成兩行解釋,上面的一行依舊包括集群ID定義、格式化存儲(chǔ)目錄以及啟動(dòng)Kafaka服務(wù)器的部分。下面一行只定義了advertised的listeners 的信息,這個(gè)信息是從env(環(huán)境變量)中的KAFKA_ADVERTISED_LISTENERS 對(duì)應(yīng)的value中讀取。

可以通過如下命令執(zhí)行上面的文件:

kubectl apply -f kubernetes.yaml 

執(zhí)行之后會(huì)對(duì)鏡像進(jìn)行部署,將通過使用zkless-kafka-bootstrap主機(jī)名公開引導(dǎo)服務(wù)器。同時(shí)會(huì)對(duì)部署服務(wù)器所在的當(dāng)前命名空間的訪問限制。此時(shí)就可以和其他advertised listeners(廣播監(jiān)聽者)一樣獲取你想要的消息了。

概括

本文簡(jiǎn)要介紹了 Apache Kafka 新Control plane(控制面)的實(shí)現(xiàn)。由于上一個(gè)版本的Kafaka完成集群控制的功能,借此可以使用功能強(qiáng)大的 Zookeeperless Kafka 集群。我們回顧了使用容器鏡像部署單節(jié)點(diǎn)集群的三種簡(jiǎn)單方法:執(zhí)行簡(jiǎn)單的 Docker 或 podman 命令、執(zhí)行 docker-compose 文件以及在 Kubernetes 上部署運(yùn)行中的 pod。

作者簡(jiǎn)介

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗(yàn),10年分布式架構(gòu)經(jīng)驗(yàn)。曾任惠普技術(shù)專家。樂于分享,撰寫了很多熱門技術(shù)文章,閱讀量超過60萬?!斗植际郊軜?gòu)原理與實(shí)踐》作者。

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】


當(dāng)前名稱:牢記這三種方法!即便沒有Zookeeper也能運(yùn)行Kafka
當(dāng)前地址:http://uogjgqi.cn/article/cciojpg.html
掃二維碼與項(xiàng)目經(jīng)理溝通

我們?cè)谖⑿派?4小時(shí)期待你的聲音

解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流