828华为云征文 | 华为云FlexusX实例下的Kafka集群部署实践与性能优化

前言

华为云FlexusX实例,以创新的柔性算力技术,为Kafka集群部署带来前所未有的性能飞跃。其灵活的CPU与内存配比,结合智能调度与加速技术,让Kafka在高并发场景下依然游刃有余。在828华为云企业上云节期间,FlexusX实例携手海量优惠,助力企业轻松上云,享受数字化转型的加速红利。

链接直达华为云Flexus云服务器X实例

在这里插入图片描述

Kafka简介

Kafka是一个性能、高吞吐量分布式发布订阅消息系统,专为处理大规模数据流而设计。作为Apache顶级项目之一,Kafka以其卓越的扩展性、持久性和可靠性,在大数据和实时处理领域占据重要地位。它允许生产者(数据发送者)以高吞吐量向Kafka集群发布消息,而消费者(数据接收者)则可以以低延迟从集群中读取消息。Kafka通过将消息存储到多个分区中,并在多个broker(服务器)之间复制这些分区,实现了数据的高可用性和容错性。

Kafka不仅支持简单的消息传递,还具备强大的流处理能力,能够与各种流处理框架无缝集成,实现复杂的数据转换和分析任务。其灵活的消息模型和可扩展的架构,使得Kafka能够轻松应对各种应用场景,包括日志收集、事件监控、消息队列以及实时数据管道等。

官方网站:https://kafka.apache.org/

官方文档:https://kafka.apache.org/documentation/

ZooKeeper简介

ZooKeeper是一个开源的分布式协调服务,它为分布式应用提供一致性服务,主要用于管理大型分布式系统中的配置信息、命名服务、分布式同步以及提供组服务等,通过其简单的API和强大的功能,使得分布式系统中的各个组件能够相互协调、协同工作。

官方网站:https://zookeeper.apache.org/

官方文档:https://zookeeper.apache.org/doc/

华为云Flexus X实例部署Kafka集群的亮点

灵活配置:通过柔性计算技术,自由调整CPU、内存资源,匹配Kafka需求。

高性能&可扩展:增强Kafka的高吞吐、高可用特性,支持便捷的水平扩展。

无缝集成&自动化:华为云服务助力无缝集成,支持自动化运维,减少人工干预。

安全可靠:集成华为云安全体系,结合Kafka副本机制,确保数据安全和服务可用。

成本效益:智能化运维降低运维成本,提高运维效率。

响应速度:提升业务系统处理实时数据流的响应速度。

业务连续性:故障自动迁移和容错能力,保障业务稳定运行。

促进创新:灵活性和可扩展性支持快速调整,应对市场变化和挑战。

环境规划

操作系统ZookeeperKafkadockerdocker-compose连接方式
Huawei Cloud EulerOS 2.0zookeeperwurstmeister/kafka27.1.12.29.1本地shell

本次实验环境中,准备搭建一台zookeeper以及三个Kafka broker组成的Kafka Cluster

在这里插入图片描述

部署流程

需要了解:

  • 采用docker方式进行部署kafka集群

  • 详细购买配置实例可参考文章: 快速部署华为云Flexus X实例,开启您的云端之旅

  • 部署docker服务请参考文章:华为FlexusX与Docker+Nginx的高效整合之路

拉取镜像

查看并拉取zookeeper镜像(镜像尽量拉取官方镜像)

# 默认拉取最新版
[root@flexusx-251f ~]# docker search zookeeper
NAME                                         DESCRIPTION                                     STARS     OFFICIAL
zookeeper                                    Apache ZooKeeper is an open-source server wh…   1452      [OK]
bitnamizookeeper                            Bitnami container image for ZooKeeper           122
chainguardzookeeper                         Minimal image with Apache Zookeeper.            0
rapidfortzookeeper                          RapidFort optimized, hardened image for Zook…   9
ubuntuzookeeper                             ZooKeeper maintains configuration informatio…   13
..............................                                    [root@flexusx-251f ~]# docker pull zookeeper
Using default tag latest
latest Pulling from libraryzookeeper
f7ec5a41d630 Already exists
faf4c47c8c61 Pull complete
810072571faf Pull complete
ca2026cde8de Pull complete
560b60c59d86 Pull complete
48a7bbbfc8eb Pull complete
56ff45ef75e6 Pull complete
e28096689586 Pull complete
Digest sha256ecc855e80a6c36a9864e7c1ccc0b68a13595871f88bc8a97e7f2c82a8e9803b2
Status Downloaded newer image for zookeeperlatest
docker.iolibraryzookeeperlatest

查看并拉取kafka镜像(镜像尽量拉取官方镜像)

[root@flexusx-251f ~]# docker search kafka
NAME                                     DESCRIPTION                                                                                                                                                             STARS     OFFICIAL
chainguard/kafka                         Minimal image with Kafka.                                                                                                                                               0
bitnami/kafka                            Bitnami container image for Apache Kafka                                                                                                                                884
ubuntu/kafka                             Apache Kafka, a distributed event streaming …                                                                                                                           51
apache/kafka                             Apache Kafka                                                                                                                                                            63
rancher/kafka                                                                                                                                                                                                    2
bitnamicharts/kafka    
..............................       [root@flexusx-251f ~]# docker pull  bitnami/kafka
Using default tag: latest
latest: Pulling from bitnami/kafka
2449408de487: Pull complete
Digest: sha256:999ba91863ef67e13c5704c3145154d0484671222dab2a603bfdeedc4a9fbad7
Status: Downloaded newer image for bitnami/kafka:latest
docker.io/bitnami/kafka:latest

编写docker-compose.yaml

编写docker-compose.yaml

[root@flexusx-251f ~]# mkdir /kafka
[root@flexusx-251f ~]# cd /kafka/
[root@flexusx-251f kafka]# vim docker-compose.yaml
version: '2.9'  
services:  zookeeper:  image: zookeeper:latestports:  - "2181:2181"       # 将容器的2181端口映射到宿主机的2181端口environment:  ZOO_MY_ID: 1                              # 设置Zookeeper节点的ID为1ZOO_SERVERS: server.1=zookeeper:2888:3888;2181   # 配置Zookeeper集群信息,我们只定义了一个节点,所以为单个kafka1:  image: bitnami/kafka:latestdepends_on:  - zookeeper  ports:  - "9092:9092"  environment:  KAFKA_BROKER_ID: 1             # 设置Kafka broker的ID为1KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181  # 指定Kafka如何连接到ZookeeperKAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092  # 设置Kafka broker对外部客户端广播的地址和端口KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT  KAFKA_INTER_BROKER_PROTOCOL_VERSION: 2.8  KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1  kafka2:  image: bitnami/kafka:latest  depends_on:  - zookeeper  ports:  - "9093:9092"  environment:  KAFKA_BROKER_ID: 2  KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka2:9092  KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT  KAFKA_INTER_BROKER_PROTOCOL_VERSION: 2.8  KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1  kafka3:  image: bitnami/kafka:latest depends_on:  - zookeeper  ports:  - "9094:9092"  environment:  KAFKA_BROKER_ID: 3  KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka3:9092  KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT  KAFKA_INTER_BROKER_PROTOCOL_VERSION: 2.8  KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1

创建容器

执行docker-compose,开始创建容器

[root@flexusx-251f kafka]# docker-compose up -d
WARN[0000] /kafka/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 5/5✔ Network kafka_default        Created                                           0.0s✔ Container kafka-zookeeper-1  Started                                           0.2s✔ Container kafka-kafka2-1     Started                                           0.3s✔ Container kafka-kafka3-1     Started                                           0.3s✔ Container kafka-kafka1-1     Started                                           0.3s

查看容器状态(全部正常运行如果不正常请查看日志)

[root@flexusx-251f kafka]# docker-compose ps
WARN[0000] /kafka/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME                IMAGE                  COMMAND                  SERVICE     CREATED         STATUS         PORTS
kafka-kafka1-1      bitnami/kafka:latest   "/opt/bitnami/script…"   kafka1      7 seconds ago   Up 6 seconds   0.0.0.0:9092->9092/tcp, :::9092->9092/tcp
kafka-kafka2-1      bitnami/kafka:latest   "/opt/bitnami/script…"   kafka2      7 seconds ago   Up 6 seconds   0.0.0.0:9093->9092/tcp, :::9093->9092/tcp
kafka-kafka3-1      bitnami/kafka:latest   "/opt/bitnami/script…"   kafka3      7 seconds ago   Up 6 seconds   0.0.0.0:9094->9092/tcp, :::9094->9092/tcp
kafka-zookeeper-1   zookeeper:latest       "/docker-entrypoint.…"   zookeeper   7 seconds ago   Up 6 seconds   2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp, :::2181->2181/tcp, 8080/tcp

放行安全组

放行端口2181,9092,9093,9094

在这里插入图片描述

基本使用

创建主题

进入容器内部,并进入bin目录下(脚本文件都在这个目录下)

[root@flexusx-251f kafka]# docker exec -it kafka-kafka1-1 /bin/bash
I have no name!@6a5684babfc1:/$ ls
bin      dev                         etc   lib64  opt   run     srv  usr
bitnami  docker-entrypoint-initdb.d  home  media  proc  run.sh  sys  var
boot     entrypoint.sh               lib   mnt    root  sbin    tmpI have no name!@6a5684babfc1:/$ cd /opt/bitnami/kafka/bin/

创建主题(任意一个kafka即可)

  • 使用kafka-topics.sh脚本在Kafka集群(通过123.249.27.118:9092访问)中创建一个名为topic1的新主题,该主题包含3个分区,每个分区有3个副本。
I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --create --bootstrap-server 123.249.27.118:9092 --replication-factor 3 --partitions 3 --topic topic1
Created topic topic1.

命令不知道如何使用,可以进行help查询

./kafka-topics.sh --help

查看主题

查看主题,

  • 使用kafka-topics.sh脚本描述(或查询)Kafka集群(通过123.249.27.118:9092访问)中名为topic1的主题的详细信息。
I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --describe --bootstrap-server 123.249.27.118:9092 --topic topic1
[2024-09-11 02:21:00,753] WARN [AdminClient clientId=adminclient-1] The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)
Topic: topic1   TopicId: V1q3U6OxR1G5Umo203kvPQ PartitionCount: 3       ReplicationFactor: 3   Configs:Topic: topic1   Partition: 0    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2    Elr: N/A LastKnownElr: N/ATopic: topic1   Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3    Elr: N/A LastKnownElr: N/ATopic: topic1   Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1    Elr: N/A LastKnownElr: N/A

通过执行kafka-topics.sh脚本的describe命令,并指定bootstrap-server123.249.27.118:9092以及查询的topictopic1,我们观察到该主题的3个分区被均匀且成功地分配到了Kafka集群的三个broker上,这标志着这三个broker已经构建了一个高效协作、稳定运行的Kafka集群环境。

查看主题列表

I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --bootstrap-server localhost:9092 --list
topic1

修改主题信息

分区只能增加,不能减少;副本不支持修改

I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ ./kafka-topics.sh --bootstrap-server localhost:9092 --alter --topic topic1 --partitions 4
[2024-09-11 03:23:54,240] WARN [AdminClient clientId=adminclient-1] The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --describe --bootstrap-server 123.249.27.118:9092 --topic topic1
[2024-09-11 03:24:17,033] WARN [AdminClient clientId=adminclient-1] The DescribeTopicPartitions API is not supported, using Metadata API to describe topics. (org.apache.kafka.clients.admin.KafkaAdminClient)
Topic: topic1   TopicId: V1q3U6OxR1G5Umo203kvPQ PartitionCount: 4       ReplicationFactor: 3   Configs:Topic: topic1   Partition: 0    Leader: 3       Replicas: 3,1,2 Isr: 3,1,2    Elr: N/A LastKnownElr: N/ATopic: topic1   Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3    Elr: N/A LastKnownElr: N/ATopic: topic1   Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1    Elr: N/A LastKnownElr: N/ATopic: topic1   Partition: 3    Leader: 3       Replicas: 3,2,1 Isr: 3,2,1    Elr: N/A LastKnownElr: N/A

删除主题

I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --bootstrap-server localhost:9092 --delete --topic topic1# 可以看到,已经没有主题存在了
I have no name!@6a5684babfc1:/opt/bitnami/kafka/bin$ kafka-topics.sh --bootstrap-server localhost:9092 --list

体验和感受

在大数据与实时流处理领域,Kafka以其高吞吐量、低延迟和可扩展性赢得了广泛赞誉。而华为云FlexusX实例,以其卓越的计算性能、灵活的资源配置和稳定的云环境,为Kafka集群的部署提供了理想平台。

在FlexusX实例上部署Kafka集群,不仅能够充分利用其强大的计算资源,还能通过精细化的配置与优化,实现集群性能的最大化。我们结合华为云提供的专业指导与最佳实践,对Kafka集群进行了深度优化,包括网络配置、存储优化、分区与副本策略调整等,确保Kafka在高并发、大数据量场景下依然能够稳定运行,提供卓越的服务质量。

值此828华为云企业上云节之际,诚邀您一起体验FlexusX实例下的Kafka集群部署与优化服务。在特惠期间,将享受到前所未有的价格优惠与专业的技术支持,助您轻松构建高效、稳定的实时数据流处理系统。选择华为云FlexusX实例,让Kafka集群的部署与性能优化变得更加简单、高效。点击下方链接,立即行动,把握828特惠,让Kafka集群在FlexusX实例的强劲动力下,开启数据流处理的新篇章!

产品链接华为云Flexus云服务器X实例_直播_建站服务器-华为云

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/424206.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机玩机常识____展讯芯片刷机平台ResearchDownload的一些基本常识与问题解决

展讯ResearchDownload工具 展讯芯片的刷机工具--ResearchDownload下载工具"是一款专为用户设计的高效、便捷的下载管理软件,它能够帮助用户快速、稳定地从互联网上获取各种文件。这款工具以其强大的功能和良好的用户体验,在众多展讯芯片下载工具中脱…

git-describe获取不到新创建的标签

一、问题描述 1、新建的分支 2、git-describe 失败 二、查询资料 (1)git-describe - 根据可用的ref给对象一个人类可读的名称 (2)该命令查找可从提交访问的最新标记。如果标记指向提交,则仅显示标记。否则&#xf…

S-Procedure的基本形式及使用

理论 Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- \textbf{Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- } Lemma 1. ( S- Procedure[ 34] ) : Define the quadratic func- tions w.r.t. x ∈ C M 1 \mathbf{x}\in\mathbb{C}^M\times1 x…

el-input设置type=‘number‘和v-model.number的区别

el-input设置typenumber’与设置.number修饰符的区别 1. 设置type‘number’ 使用el-input时想收集数字类型的数据,我们首先会想到typenumber,设置完type为number时会限制我们输入的内容只能为数字,不能为字符/汉字等非数字类型的数值&…

Leetcode面试经典150题-148.排序链表

题目比较简单,使用链表的归并排序 解法都在代码里,不懂就留言或者私信 合并链表部分没怎么加注释,时间实在是不充裕,看不懂的看一下这篇专门讲解合并链表的 Leetcode面试经典150题-21.合并两个有序链表-CSDN博客 /*** Definit…

Brave编译指南2024 Windows篇:安装Visual Studio 2022(二)

1.引言 在编译Brave浏览器之前,安装和配置合适的开发工具是至关重要的一步。Visual Studio 2022是编译Brave浏览器所需的重要开发环境,它提供了一整套工具和服务,以支持多种编程语言和技术。作为一款功能强大的集成开发环境(IDE&…

【vue-media-upload】一个好用的上传图片的组件,注意事项

一、问题 media 的saved 数组中的图片使用的是location 相对路径&#xff0c;但是我的业务需要直接根据图片链接展示图片&#xff0c;而且用的也不是location 相关源代码 <div v-for"(image, index) in savedMedia" :key"index" class"mu-image-…

测试ASP.NET Core的WebApi项目调用WebService

虚拟机中部署的匿名访问的WebService&#xff0c;支持简单的加减乘除操作。本文记录在WebApi中调用该WebService的方式。   VS2022创建WebApi项目&#xff0c;然后在解决方案资源管理器的Connected Services节点点右键&#xff0c;选择管理连接的服务菜单。 点击下图圈红处…

Anolis OS 8.8 CentOS8离线安装mysql-8.0.9

下载mysql安装包&#xff1a; mysql下载地址 在Linux系统中&#xff0c;mysql的安装包除了要区分系统和cpu架构之外&#xff0c;还区分安装方式&#xff0c;下载不同的包&#xff0c;安装方式也完全不一样&#xff0c;安装完成后的效果也完全不一样。 我之前下载的包按照官方…

QT Layout布局,隐藏其中的某些部件后,不影响原来的布局

最近在工作时&#xff0c;被要求&#xff0c;需要将布局中的某些部件隐藏后&#xff0c;但不能影响原来的布局。 现在记录解决方案&#xff01; 一、水平布局&#xff08;垂直布局一样&#xff09; ui中的布局 效果&#xff1a; 按钮可以任意隐藏&#xff0c;都不影响其中布…

CCS811二氧化碳传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 ccs811.h文件 ccs811.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 CCS811模块是一种气体传感器&#xff0c;可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2…

Redis学习——数据不一致怎么办?更新缓存失败了又怎么办?

文章目录 引言正文读写缓存的数据一致性只读缓存的数据一致性删除和修改数据不一致问题操作执行失败导致数据不一致解决办法 多线程访问导致数据不一致问题总结 总结参考信息 引言 最近面试快手的时候被问到了缓存不一致怎么解决&#xff1f;一开始还是很懵的&#xff0c;因为…

关于java同步调用多个接口并返回数据

在现代软件开发中&#xff0c;应用程序经常需要与多个远程API接口进行交互以获取数据。Java作为一种流行的编程语言&#xff0c;提供了多种方式来实现这一需求。本文将探讨如何在Java中同步调用多个API接口&#xff0c;并有效地处理和返回数据。 同步调用的必要性 在某些场景下…

音视频推流中使用wireshark进行抓包分析RTMP

一、前期工作 最近使用开发板采集音视频数据合成FLV流后进行推流到PC端&#xff08;RTMP协议&#xff09;&#xff0c;PC端需要安装对应的nginx以及支持rtmp的nginx&#xff0c;在网上找了教程后安装成功&#xff0c;现在使用wireshark工具对开发板于pc端之间的通信协议进行解析…

【安全系列--处理挖矿】

现象&#xff1a;我们云上waf提示有台服务器存在挖矿行为 解决思路&#xff1a; 1、查看服务器的进程情况 top发现服务的CPU使用率非常高 2、使用性能分析工具perf查看占用的cpu进程 sudo apt install linux-tools-common发现一些kernel进程存在异常 3、使用find查一下这…

Java多线程——模拟接力赛跑

题目&#xff1a; 多人参加1000米接力跑 每人跑100米&#xff0c;换下个选手 每跑10米显示信息 解题思路&#xff1a; 1.必须要用到多线程的锁&#xff0c;否则就会出现三个选手乱跑的情况&#xff0c;我们需要一个一个跑 2.使用给oneRunner上锁的方式更细的控制资源比直接给…

助力汽车半导体产业发展,2025 广州国际新能源汽车功率半导体技术展览会与您相约“羊城”广州

助力汽车半导体产业发展&#xff0c;2025 广州国际新能源汽车功率半导体技术展览会与您相约“羊城”广州 随着半导体技术的升级与发展&#xff0c;功率半导体已经成为推动新能源汽车和智能汽车产业升级的关键因素。汽车不再只是单纯的交通工具&#xff0c;而是逐渐演变为一个智…

【H2O2|全栈】关于CSS(4)CSS基础(四)

目录 CSS基础知识 前言 准备工作 精灵图 概念 属性 案例 浮动 基础属性 清除浮动 案例 预告和回顾 后话 CSS基础知识 前言 本系列博客将分享层叠样式表&#xff08;CSS&#xff09;有关的知识点。 接下来的几期内容相对比较少&#xff0c;主要是对前面的内容进…

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;138 标注数量(xml文件个数)&#xff1a;138 标注数量(txt文件个数)&#xff1a;138 标注类别…

Linux相关:在阿里云下载centos系统镜像

文章目录 1、镜像站2、下载方式一2.1、第一步打开镜像站地址2.2 下载地址: https://mirrors.aliyun.com/centos/2.3、选择7版本2.4、镜像文件在isos文件夹中2.5、选择合适的版本 3、下载镜像快捷方式 1、镜像站 阿里云镜像站地址 2、下载方式一 2.1、第一步打开镜像站地址 2…