当前位置:首页 > 科技  > 软件

Linux下利用Docker快速部署配置Kafka服务

来源: 责编: 时间:2024-01-10 17:24:32 419观看
导读Kafka是由Apache软件基金会开发一个开源流处理平台,使用Scala和Java编写, 该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个按照分布式事务日志架构的大规模发布/订阅消息队

Kafka是由Apache软件基金会开发一个开源流处理平台,使用Scala和Java编写, 该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个按照分布式事务日志架构的大规模发布/订阅消息队列。这种工作方式使它为企业级基础设施来处理流失数据非常有价值。qoE28资讯网——每日最新资讯28at.com

本文的目的是使用Docker容器来部署Kafka, 这样可以省略Kafka安装配置的中间过程, 节省大量时间。文章中分别从几个维度来阐述Kafka的部署过程, 包括:基础环境要求、安装zookeeper、容器内的设置等, 最后给出了一个从生产者角度向消费者发送消息, 消费者成功接收到消息作为结尾, 最后给出了一个在全过程当中遇到问题排查的正确方法。qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

认识Kafka

Kafka存储的消息来自任务多被称为"生产者"(Producer)的进程。数据从而可以被分配到不同的"分区"(Partition)、不同的“Topic”下。在一个分区内, 消息被索引并连同时间戳存储在一起。而其它被称为"消费者"(Consumer)的进程可以从分区查询消息。Kafka运行在一个由一台或多台服务器组成的集群上, 并且分区可以跨集群节点分布。Kafka的架构如下图所示:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

以下列出了Kafka技术相关的术语:qoE28资讯网——每日最新资讯28at.com

  • Topic - 用来对消息进行分类, 每个进入到Kafka的信息都会被放到一个Topic下。
  • Broker - 用来实现数据存储的主机服务器。
  • Partition - 每个Topic中的消息会被分为若干个Partition,以提高消息的处理效率
  • Producer - 消息的生产者
  • Consumer - 消息的消费者

了解了以上概念之后,对于Kafka的部署已经没有什么障碍, 下面开始正式的部署过程。qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

基础环境准备

大多数Linux发行版都支持安装Kafka,这里我准备了一台ubuntu 22.04.3 LTS版本的虚拟机作为试验环境。qoE28资讯网——每日最新资讯28at.com

登录到系统输入:docker -v 命令, 如果出现:qoE28资讯网——每日最新资讯28at.com

Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1

类似于这样的提示信息,说明Docker已安装,如果没有,请输入以下命令安装Docker:qoE28资讯网——每日最新资讯28at.com

$ sudo apt update$ sudo apt install docker.io

qoE28资讯网——每日最新资讯28at.com

安装zookeeper

由于Kafka依赖Zookeeper实现高可用性和一致性,其为Kafka提供了关键的分布式协调服务,因此部署Kafka必须先部署Zookeeper集群作为基础, 以下进入部署Zookeeper的过程:qoE28资讯网——每日最新资讯28at.com

在命令行直接输入以下命令,docker会自动拉取对应镜像:qoE28资讯网——每日最新资讯28at.com

# docker run -d --name zookeeper -p 2181:2181 -v /etc/localtime:/etc/localtime wurstmeister/zookeeper

拉取过程如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

安装Kafka

Zookeeper安装成功后, 接着安装Kafka组件, 在命令行直接输入以下命令,docker会自动拉取对应镜像:qoE28资讯网——每日最新资讯28at.com

# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=[你的IP地址]:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://[你的IP地址]:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

注意, 我的服务器IP是192.168.201.206,所以上面的IP要根据自己的实际情况进行变更,我变更后的命令如下:qoE28资讯网——每日最新资讯28at.com

# docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=0 -e KAFKA_ZOOKEEPER_CONNECT=192.168.201.206:2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.201.206:9092 -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -t wurstmeister/kafka

拉取过程如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

进入容器

Kafka安装完毕后,还要进入到容器中启动生产者和消费者,这样可以验证kafka功能是否正常,顺序执行命令如下:qoE28资讯网——每日最新资讯28at.com

# docker ps -a #查看kafka镜像的容器ID# docker exec -it 容器ID /bin/sh #进入到容器内部# cd /opt/kafka/bin # 切到容器内部kafka执行目录下

执行最后的结果如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

启动生产者

在容器里执行以下命令启动生产者:qoE28资讯网——每日最新资讯28at.com

./kafka-console-producer.sh --broker-list localhost:9092 --topic [你的topic名称]

我这里自己起了一个topic名称,名字为test123, 如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

产生者脚本启动成功后,会有一个">"提示符。qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

启动消费者

为了看到生产者和消费者之间的消息传递效果,这里需要另开一个终端,按照上面的方法进入容器对应目录,并执行以下命令:qoE28资讯网——每日最新资讯28at.com

./kafka-console-consumer.sh --bootstrap-server [你的IP地址]:9092 --topic [你的topic名称]

注意,这里有两个变量需要自己调整,一个是IP地址,另一个是上面建立的Topic名称, 我这里填入信息后的完整命令如下:qoE28资讯网——每日最新资讯28at.com

./kafka-console-consumer.sh --bootstrap-server 192.168.201.206:9092 --topic test123

执行过程如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

生产者与消费者测试

切换到生产者窗口,连续输入一些信息,如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

再切换回消费者窗口,  正常的话已经可以收到生产者发送的信息了,如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

1故障排查

如果在使用Docker过程中遇到任何错误, 可以命令:qoE28资讯网——每日最新资讯28at.com

docker logs 容器ID

通过查看容器日志进行故障排查,过程如图:qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

qoE28资讯网——每日最新资讯28at.com

总结

在部署Kafka的整个过程中, 遵循以下部署顺序流程:qoE28资讯网——每日最新资讯28at.com

  • 首先检查Docker安装是否正常, 确保Docker安装无任何异常。
  • 其次安装Kafka的依赖服务Zookeeper, 只需要一句命令可实现自动镜像拉取。
  • 接着安装Kafka组件,也是一句命令即可搞定, 自动拉取对应的镜像。
  • 进入到容器内部, 分别启动生产者和消费者脚本, 便可以开始进行发送消息测试了。
  • 在整个部署过程中,遇到任何错误或问题都可以通过Docker日志进行问题排查。

本文链接:http://www.28at.com/showinfo-26-60384-0.htmlLinux下利用Docker快速部署配置Kafka服务

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 线程使用越多程序越快?别瞎整

下一篇: 公司用了六年的 SpringBoot 项目部署方案,稳得一批!

标签:
  • 热门焦点
  • 一文看懂为苹果Vision Pro开发应用程序

    译者 | 布加迪审校 | 重楼苹果的Vision Pro是一款混合现实(MR)头戴设备。Vision Pro结合了虚拟现实(VR)和增强现实(AR)的沉浸感。其高分辨率显示屏、先进的传感器和强大的处理能力
  • 一年经验在二线城市面试后端的经验分享

    忠告这篇文章只适合2年内工作经验、甚至没有工作经验的朋友阅读。如果你是2年以上工作经验,请果断划走,对你没啥帮助~主人公这篇文章内容来自 「升职加薪」星球星友 的投稿,坐
  • 分布式系统中的CAP理论,面试必问,你理解了嘛?

    对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测。而且看了很多书和视频还是一脸懵逼。这篇文章主要使用大白话的方式,带你理解一下分布式系统
  • 得物效率前端微应用推进过程与思考

    一、背景效率工程随着业务的发展,组织规模的扩大,越来越多的企业开始意识到协作效率对于企业团队的重要性,甚至是决定其在某个行业竞争中突围的关键,是企业长久生存的根本。得物
  • 量化指标是与非:挽救被量化指标扼杀的技术团队

    作者 | 刘新翠整理 | 徐杰承本文整理自快狗打车技术总监刘新翠在WOT2023大会上的主题分享,更多精彩内容及现场PPT,请关注51CTO技术栈公众号,发消息【WOT2023PPT】即可直接领取
  • 十个简单但很有用的Python装饰器

    装饰器(Decorators)是Python中一种强大而灵活的功能,用于修改或增强函数或类的行为。装饰器本质上是一个函数,它接受另一个函数或类作为参数,并返回一个新的函数或类。它们通常用
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 网红炒股不为了赚钱,那就是耍流氓!

    来源:首席商业评论6月26日高调宣布入市,网络名嘴大v胡锡进居然进军了股市。在一次财经媒体峰会上,几个财经圈媒体大佬就“胡锡进炒股是否知道认真报道”展开讨论。有
  • 三星Galaxy Z Fold5官方渲染图曝光:13.4mm折叠厚度依旧感人

    据官方此前宣布,三星将于7月26日在韩国首尔举办Unpacked活动,届时将带来带来包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy Z Flip 5、
Top