大数据场景下的消息队列:Kafka3.0快速入门

简介: Kafka是一个分布式的基于发布/订阅模式的消息队列,同时它又是一个分布式的事件流平台。既可作为消息队列,又可作为数据管道、流分析的应用。目前Kafka的最大应用还是消息队列。市面上主流的消息队列有RabbitMQ,ActiveMQ、Kafka等等,其中RabbitMQ,ActiveMQ这些主要是Java应用中的队列,而Kafka主要在大数据场景下使用。消息队列主要应用场景有如下几种:削峰、限流、解耦、异步通信等。

(一)什么是Kafka


Kafka是一个分布式的基于发布/订阅模式的消息队列,同时它又是一个分布式的事件流平台。既可作为消息队列,又可作为数据管道、流分析的应用。目前Kafka的最大应用还是消息队列。


市面上主流的消息队列有RabbitMQ,ActiveMQ、Kafka等等,其中RabbitMQ,ActiveMQ这些主要是Java应用中的队列,而Kafka主要在大数据场景下使用。


消息队列主要应用场景有如下几种:削峰、限流、解耦、异步通信等。


(二)消息队列的实现模式


消息队列的实现主要有两种模式,一种叫点对点模式:生产者将消息发送到队列中后,消费者从队列中取出并且消费消息。这种模式保证一个消息只会被一个消费者消费一次,不可以重复消息。


网络异常,图片无法展示
|


第二种是发布/订阅模式,也就是Kafka所使用的模式。在发布/订阅模式中,队列中存在多个topic主题,生产者将消息发送到队列的topic中,消费者可以订阅某个topic消费数据。并且消费者消费数据之后,不会删除数据。


网络异常,图片无法展示
|


(三)Kafka的架构设计


前面讲到Kafka主要用于大数据环境,那避免不了的要接触海量的数据。当遇到TB级别的数据时,目前最优的设计架构是分而治之,也就是将数据分散到不同的机器上去,Kafka就应用了这样的设计方式。


Kafka集群会将一个Topic分为多个partition(分区),每个Topic还可以指定副本的数量,并分配到不同的机器中。同时为了提高消费者的消费能力,运用消费组的方式,使得消费组中的消费者并行消费。为了提高可靠性,采用副本的方式保证可用性。通过Zookeeper等方式记录配置信息。


网络异常,图片无法展示
|


(四)Kafka的快速安装


kafka的配置信息默认存放在zookeeper中,因此需要提前将zookeeper安装完成并启动,不然kafka会报连接失败。


首先是Kafka的下载,我这里选择的是kafka3.0,对应的安装包名为:kafka_2.13-3.0.0.tgz,下载地址如下:


downloads.apache.org/kafka/3.0.0…


下载完成后将文件上传至linux服务器,接下来就可以开始安装了

tar -xzf kafka_2.13-3.0.0.tgz
mv kafka_2.13-3.0.0 kafka

解压完成后修改一下相应的配置文件,首先需要对kafka服务的配置进行修改,进入kafka/config,修改server.properties,主要修改一下数据的存放地址,默认log.dirs的地址是/tmp下的路径,修改为自定义的目录下、另外将zookeeper的地址改成自己的地址。


log.dirs=/usr/local/kafka/datas
zookeeper.connect=localhost:2181

接着在kafka目录下启动kafka:

./bin/kafka-server-start.sh -daemon ./config/server.properties

在kafka/logs目录下查看server.log,如果提示started,则表示启动成功,不然就根据错误的原因重新修改配置或命令。


网络异常,图片无法展示
|


(五)Kafka的命令行操作


Kafka在结构上可以分为生产者、消费者和服务本身,这一节主要介绍Kafka自身的kafka-topics.sh一些命令行操作,常用的命令行参数通过表格的形式给出


参数
描述
--boostrap-server
连接Kafka
--topic 操作的topic名称
--create 创建topic
--delete
删除topic
--alter 修改topic
--list
查看所有主题
--describe 查看主题详细描述
--partitions 设置分区的数量
--replication-factor 设置分区的副本数

5.1 创建Topic


使用下面的命令可以创建一个名为testTopic,分区数为1,副本数为1的Topic

./bin/kafka-topics.sh --bootstrap-server127.0.0.1:9092 --topic testTopic --create--partitions1--replication-factor1

5.2 查看Topic


--list 可以查看所有的Topic,--describe 可以查看某个topic的详细信息:

./bin/kafka-topics.sh --bootstrap-server127.0.0.1:9092 --list./bin/kafka-topics.sh --bootstrap-server127.0.0.1:9092 --topic testTopic --describe

5.3 删除Topic


删除的操作和上面的写法一致:

./bin/kafka-topics.sh --bootstrap-server 127.0.0.1:9092 --topic testTopic --delete

5.4 简单的消息生产与消费


创建完Topic之后可以简单地对消息进行生产和消费,创建完一个Topic之后,通过生产者的命令行发送一条消息:

./bin/kafka-console-producer.sh --bootstrap-server 127.0.0.1:9092 --topic testTopic

接着可以输入一些消息,比如输入hello world


在另一个会话中使用消费者的命令行消费消息:


./bin/kafka-console-consumer.sh --bootstrap-server 127.0.0.1:9092 --topic testTopic --from-beginning

(六)总结


本文主要介绍了Kafka是什么、Kafka的架构、Kafka的安装和基本使用。接下来会有更多有关kafka的文章,我是鱼仔,我们下期再见

相关文章
|
3月前
|
消息中间件 关系型数据库 MySQL
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
大数据-117 - Flink DataStream Sink 案例:写出到MySQL、写出到Kafka
260 0
|
18天前
|
消息中间件 运维 大数据
道旅科技借助云消息队列 Kafka 版加速旅游大数据创新发展
阿里云云消息队列 Kafka 版 Serverless 系列凭借其卓越的弹性能力,为道旅科技提供了灵活高效的数据流处理解决方案。无论是应对突发流量还是规划长期资源需求,该方案均能帮助企业实现资源动态调整和成本优化,同时保障业务的高可用性和连续性。
|
25天前
|
存储 分布式计算 安全
MaxCompute Bloomfilter index 在蚂蚁安全溯源场景大规模点查询的最佳实践
MaxCompute 在11月最新版本中全新上线了 Bloomfilter index 能力,针对大规模数据点查场景,支持更细粒度的数据裁剪,减少查询过程中不必要的数据扫描,从而提高整体的查询效率和性能。
|
24天前
|
消息中间件 存储 负载均衡
2024消息队列“四大天王”:Rabbit、Rocket、Kafka、Pulsar巅峰对决
本文对比了 RabbitMQ、RocketMQ、Kafka 和 Pulsar 四种消息队列系统,涵盖架构、性能、可用性和适用场景。RabbitMQ 以灵活路由和可靠性著称;RocketMQ 支持高可用和顺序消息;Kafka 专为高吞吐量和低延迟设计;Pulsar 提供多租户支持和高可扩展性。性能方面,吞吐量从高到低依次为
94 1
|
2月前
|
消息中间件
【有奖体验】解锁轻量消息队列(原 MNS)作为云产品间消息通道的典型场景
快来解锁轻量消息队列(原 MNS)作为云产品间消息通道的典型场景,赢丰厚奖品!
|
2月前
|
消息中间件 Java Kafka
初识Apache Kafka:搭建你的第一个消息队列系统
【10月更文挑战第24天】在数字化转型的浪潮中,数据成为了企业决策的关键因素之一。而高效的数据处理能力,则成为了企业在竞争中脱颖而出的重要武器。在这个背景下,消息队列作为连接不同系统和服务的桥梁,其重要性日益凸显。Apache Kafka 是一款开源的消息队列系统,以其高吞吐量、可扩展性和持久性等特点受到了广泛欢迎。作为一名技术爱好者,我对 Apache Kafka 产生了浓厚的兴趣,并决定亲手搭建一套属于自己的消息队列系统。
89 2
初识Apache Kafka:搭建你的第一个消息队列系统
|
3月前
|
存储 分布式计算 druid
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
87 1
大数据-149 Apache Druid 基本介绍 技术特点 应用场景
|
3月前
|
SQL 存储 分布式计算
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
大数据-157 Apache Kylin 背景 历程 特点 场景 架构 组件 详解
54 9
|
3月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
63 3
|
3月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
53 2

相关产品

  • 云消息队列 Kafka 版