首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kafka的基本应用(二)

Kafka的基本应用(二)

作者头像
无涯WuYa
发布2021-04-20 11:26:46
2940
发布2021-04-20 11:26:46
举报

Kafka环境搭建中详细的介绍了Kafka的环境搭建,接下来主要演示Kafka的基本应用和Kafka中常用的概念。

在Kafka中,kafka-topic.sh可以用来管理主题,包含了主题的创建,查看,修改和删除。Kafka中的数据最终是需要做持久化的处理,但是这些数据不是单一的业务数据,所以需要在做持久化的时候来区分各个不同业务数据,比如在数据库里面,就会有数据库和表的分类模式,基于Kafka的业务数据,也就有了“主题”概念,简单理解就是把不同类型的业务消息数据按照一定的规则进行分类,最后把相同类型的业务数据存储到同一个主题中。如交易业务数据,那么就会有充值记录,消费记录,但是都可以存储到交易的主题中。刚才谈到主题,那么首先来看在kafka中主题的管理操作,如下显示查看kafka已有的主题命令:

kafka-topics.sh --list --zookeeper localhost:2181

在如上截图中可以看到具体的主题列表,下面再来演示创建主题,比如创建主题pay,该主题拥有一个副本和2个分区,具体创建命令以及过程如下所示:

kafka-topics.sh --create --zookeeper localhost:2181

--replication-factor 1 --partitions 2 --topic pay

Created topic pay.

再次查看已有的主题信息:

kafka-topics.sh --list --zookeeper localhost:2181
__consumer_offsets
ip_login
login
pay
test

可以看到在主题列表中新增了“pay”的主题。主题创建成功后,连接ZK的服务端就可以看到创建的主题元数据信息,具体如下所示:

#查看主题"pay"的分区数
[zk: localhost:2181(CONNECTED) 1] ls /brokers/topics/pay/partitions
[0, 1]
#查看主题"pay"的分区元数据信息
[zk: localhost:2181(CONNECTED) 2] get /brokers/topics/pay
{"version":2,"partitions":{"1":[0],"0":[0]},"adding_replicas":{},"removing_replicas":{}}

使用命令--descripe可以查看主题的分区以及副本,如查看主题“pay”的分区以及副本信息,具体如下:

kafka-topics.sh  --describe --zookeeper  localhost:2181  --topic pay
Topic: pay PartitionCount: 2  ReplicationFactor: 1   Configs:
Topic: pay Partition: 0   Leader: 0  Replicas: 0    Isr: 0
Topic: pay Partition: 1   Leader: 0  Replicas: 0    Isr: 0

刚才创建主题的过程中看到说到分区和副本,这里详细的解释下什么是分区,什么是副本。Kafka作为生产者消费者模式的MQ中间件,客户端在调用生产者接口的时候,需要关心的是把数据给那个主题,而作为消费端来说,关心的也是消费(订阅)那个主题的数据,过程中并不关心这个数据它是存储在Kafka集群的那个代理节点上。但是如果所有的数据都在一个代理节点上,这个代理节点就会存在IO的瓶颈,严重影响到它的IO的吞吐量,也无法实现水平扩展,而分区的引入就可以很好的解决了水平扩展的问题,具体来说就是每个主题上的分区可以理解为是一个数组,新来的消息数据可以有序的追加到该数组上,这样每个分区就都会有一个文件夹,而一个代理节点可以存放多个分区。这样生产者可以把消息数据发送到多个代理节点上的多个分区,而消费者也可以从多个代理节点上的不同分区获取数据,从而实现水平扩展。副本主要解决的是在高可用的情况下数据依然是准确的,这样一个主题拥有了多个副本可以解决防止主题的数据丢失的风险。后面可以持续演示基于新创建的主题生产者和消费者的模式。

感谢您的阅读,后续会持续更新中间件的技术栈!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档