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

news2024/11/14 14:19:34

前言

华为云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:latest
    ports:  
      - "2181:2181"       # 将容器的2181端口映射到宿主机的2181端口
    environment:  
      ZOO_MY_ID: 1                              # 设置Zookeeper节点的ID为1
      ZOO_SERVERS: server.1=zookeeper:2888:3888;2181   # 配置Zookeeper集群信息,我们只定义了一个节点,所以为单个
  
  kafka1:  
    image: bitnami/kafka:latest
    depends_on:  
      - zookeeper  
    ports:  
      - "9092:9092"  
    environment:  
      KAFKA_BROKER_ID: 1             # 设置Kafka broker的ID为1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181  # 指定Kafka如何连接到Zookeeper
      KAFKA_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    tmp

I 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/A
        Topic: topic1   Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3    Elr: N/A LastKnownElr: N/A
        Topic: 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/A
        Topic: topic1   Partition: 1    Leader: 1       Replicas: 1,2,3 Isr: 1,2,3    Elr: N/A LastKnownElr: N/A
        Topic: topic1   Partition: 2    Leader: 2       Replicas: 2,3,1 Isr: 2,3,1    Elr: N/A LastKnownElr: N/A
        Topic: 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.coloradmin.cn/o/2140386.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

亲测好用,ChatGPT 3.5/4.0新手使用手册,最好论文指令手册~

本以为遥遥领先的GPT早就普及了,但小伙伴寻找使用的热度一直高居不下,其实现在很简单了! 国产大模型快200家了,还有很多成熟的国内AI产品,跟官网一样使用,还更加好用~ ① 3.5 大多数场景是够用的&#xff…

【Java】多线程:Thread类并行宇宙

欢迎浏览高耳机的博客 希望我们彼此都有更好的收获 感谢三连支持! 在现代编程中,多线程是提高程序性能和响应能力的一种重要手段。Java 通过 Thread 类和 Runnable 接口提供了丰富的线程管理功能。本文是对 Thread 类基本用法的总结。 线程创建 线程可以…

Ubuntu 22.04上安装Java JDK 8

在Ubuntu 22.04上安装Java JDK 8可以通过以下步骤完成: 前言 本文特别感谢浪浪云的赞助发布。浪浪云,其卓越的云服务和技术支持,一直致力于为用户提供高效、可靠的解决方案。无论是个人开发者、小型企业还是大型组织,浪浪云都能…

11.01类的定义和对象的使用(练习)

类的定义 类名:手机(Phone) 成员变量:品牌(brand),价格(price) 成员方法:打电话(calL),发短信(sendMessage) 调用类变量和方法

商标申请注册加字加成通用词等于没加!

以前普推知产商标曾分析过“东方甄选”火遍全网后,许多人申请注册商标都喜欢加“甄选”,但是“甄选”基本属于通用词了,加“甄选”后还是属于前面那个词。 近期看到有人加“心选”,甄选,优选,心选等还都是选…

HTTPTomcat

HTTP&Tomcat&Servlet 今日目标: 了解JavaWeb开发的技术栈理解HTTP协议和HTTP请求与响应数据的格式掌握Tomcat的使用掌握在IDEA中使用Tomcat插件 1,Web概述 1.1 Web和JavaWeb的概念 Web是全球广域网,也称为万维网(www),…

day01 - Java基础语法

第一章 Java概述 1995年美国Sun推出Java,2009年Sun公司被甲骨文收购 Java之父:詹姆斯高斯林(James Gosling) Java编译器将源程序编译成与平台无关的字节码文件(class文件),然后由JVM对字节码文件解释执行。不同操作系统&#xf…

【C++】多态,要这样学

🚀个人主页:奋斗的小羊 🚀所属专栏:C 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 前言💥1、多态的定义和实现💥1.1 什么是多态💥1.2 多态的定义和实现&…

杨氏矩阵中查找想要找到的数

文章目录 一、题目二、思路三、代码实现 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 二、思路 第一步 根据杨氏矩阵的规则说明矩阵从左到右递增,从上往下递增,因此我们可以画出这样的图。 对于杨氏矩阵&#xff0…

java面向对象:构造方法

给出javabean类代码 package google.test5;public class Student {private String name;private int age;public Student(){System.out.println("看看我打印了嘛?");}public Student(String name, int age){this.name name;this.age age;}public void …

Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)

目录 1. 嵌套(多级)路由2. 路由query传参3. 路由命名4. 路由params传参5. props配置6. <router-link>的replace属性 1. 嵌套(多级)路由 pages/Car.vue <template><ul><li>car1</li><li>car2</li><li>car3</li></ul…

进程启动和进程终止

文章目录 进程程序进程进程ID进程表项C程序的启动过程启动例程进程终止atexit函数示例--终止函数的执行流程以及多种进程终止方式的对比 进程启动和退出流程图查看系统中的进程 进程 程序 程序是存放在磁盘文件中的可执行文件。当代码进行编辑保存后使用gcc等编译工具进行编译…

【机器学习】OpenCV入门与基础知识

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 OpenCV入门与基础知识简介安装与环境配置WindowsLinuxmacOS 核心数据结构MatSca…

Linux:进程状态和优先级

一、进程状态 1.1 操作系统学科&#xff08;运行、阻塞、挂起&#xff09; 为了弄明白正在运行的进程是什么意思&#xff0c;我们需要知道进程的不同状态 大多数操作系统都遵循以下原则 1.1.1 运行状态 因为有一个调度器需要确保CPU的资源被合理使用&#xff0c;所以需要维护…

【C++】学完c语言后的c++基础知识补充!(命名空间、输入和输出、缺省函数、函数重载、引用、内联函数代替宏、nullptr代替NULL)

一. 命名空间 1. 定义 出现的意义&#xff1a;解决各种函数、关键词和类的名称冲突问题。 定义方式&#xff1a;namespace 命名空间的名字 { } &#xff08;注意&#xff01;}后面不加&#xff1b;&#xff09; namespace 是关键词命名空间的…

CenterNet官方代码—目标检测模型推理部分解析与项目启动

CenterNet模型推理部分解析 CenterNet官方代码环境部署 CenterNet作为2019年CVPR推出的论文&#xff0c;论文中给出了官方代码所在的github仓库地址。https://github.com/xingyizhou/CenterNet。 整个代码的代码量并不是特别大&#xff0c;但整个项目的难点在于使用了老版本的…

横向移动-WMI

什么是WMI? WMI是基于 Web 的企业管理 (WBEM) 的 Windows 实现&#xff0c;WBEM 是跨设备访问管理信息的企业标准。 WBEM&#xff08;Web-Based Enterprise Management&#xff09;是一个开放标准&#xff0c;用于跨平台和跨设备的管理信息访问。WMI&#xff08;Windows Mana…

VMware Fusion虚拟机Mac版 安装Win10系统教程

Mac分享吧 文章目录 Win10安装完成&#xff0c;软件打开效果一、VMware安装Windows10虚拟机1️⃣&#xff1a;准备镜像2️⃣&#xff1a;创建虚拟机3️⃣&#xff1a;虚拟机设置4️⃣&#xff1a;安装虚拟机&#xff08;步骤和Win11安装步骤类似&#xff0c;此处相同步骤处没换…

C++从入门到起飞之——继承下篇(万字详解) 全方位剖析!

&#x1f308;个人主页&#xff1a;秋风起&#xff0c;再归来~&#x1f525;系列专栏&#xff1a;C从入门到起飞 &#x1f516;克心守己&#xff0c;律己则安 目录 1、派⽣类的默认成员函数 1.1 四个常⻅默认成员函数 1.2 实现⼀个不能被继承的类 ​编辑 2. 继承与友…

词嵌入(二):基于上下文窗口的静态词嵌入(从NNLM、CW模型谈到基于层次Softmax、负采样的Word2Vec模型)

文章目录 一、经典神经语言模型&#xff08;A Neural Probabilistic Language Model&#xff09;二、C&W模型 (Collobert and Weston, 2008)2.1 文章背景2.2 模型架构&#xff08;词向量的表示&#xff09;2.2.1 Lookup-Table Layer&#xff08;查找表&#xff09;2.2.2 TD…