前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >KafKa主题、分区、副本、消息代理

KafKa主题、分区、副本、消息代理

原创
作者头像
NeilNiu
发布2023-03-14 21:45:40
4970
发布2023-03-14 21:45:40
举报
文章被收录于专栏:NeilNiu专栏NeilNiu专栏

主题

Topic主题,类似数据库中的表,将相同类型的消息存储到同一个主题中,数据库中的表是结构化的,Topic的属于半结构化的,主题可以包含多个分区,KafKa是一个分布式消息系统,分区是kafka的分布式的基础,分区使kafka具备了拓展性,如果数据存储在单服务器上,可能会遇到存储的限制,从而导致性能的瓶颈。

分区

Kafka将主题拆分为多个分区,不同的分区存在不同的服务器上,这样就使kafka具有拓展性,可以通过调整分区的数量和节点的数量,来线性对Kafka进行拓展,分区是一个线性增长的不可变日志,当消息存储到分区中之后,消息就不可变更,kafka为每条消息设置一个偏移量也就是offset,offset可以记录每条消息的位置,kafka可以通过偏移量对消息进行提取,但是没法对消息的内容进行检索和查询,偏移量在每个分区中是唯一的不可重复,并且它是递增的,不同分区间偏移量可以重复。

kafka中的消息Record是以键值对的形式进行存储的,如果不指定key,key的值为空,当发送消息key为空,kafka会以轮询的方式将不同的消息,存放到不同的分区中,如果指定了消息key,相同的key会被写入到同一个分区,这样就可以保证具有相同key的消息按照一定的顺序进行写入。分区可以保证kafka的集群进行线性的拓展。

副本

如果分区只存在一份的话,一旦分区损害,这份数据就会丢失,kafka通过副本机制,保证数据的可靠性,可以设置副本因子的数量,replication-factor=3,含义就是包含主分区在内三个副本,kafka会选择一个副本做为主分区,主分区称之为leader,所有写入都是写入到leader中的,数据的读取也是从leader中读取的,其他两个副本称之follower,follower从leader中复制数据,保持数据的一致性,kafka会监控副本之间数据同步的状态,在元数据中维护一个ISR的集合,正在同步的副本集,这个例子中这三个副本保持正常的数据同步,如果某个副本不能正常的同步数据,或者落后的比较多,kafka会从同步的副本集将这个副本剔除,直到这个节点追赶上来之后,再重新加入,ISR=[101,102,103]

消息代理

Kafka集群是由多个broker组成的,broker负责消息的读写请求,并将数据写入到磁盘中,通常在每个服务器上都启动一个broker实例,通常情况一台服务器就是一个broker,

例子,kafka集群由8个broker组成,集群中的组成有8个分区,分别是p0到p7,副本因子是3,就是说每个数据存在3份,每个分区都有一个leader,两个follower,以第一个broker为例这个broker有三个分区,P0、P1、P2,P1这个分区是一个leader,P1的所有读写请求都是由这个Broker进行处理的,P0和P2分区是follower,这个broker只负责从p0 和p2的leader中同步数据,而不负责这两个分区的读写请求。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分区
  • 副本
  • 消息代理
相关产品与服务
消息队列 CKafka 版
消息队列 CKafka 版(TDMQ for CKafka)是一个分布式、高吞吐量、高可扩展性的消息系统,100%兼容开源 Kafka API 2.4、2.8、3.2 版本。CKafka 基于发布/订阅模式,通过消息解耦,使生产者和消费者异步交互,无需彼此等待。CKafka 具有高可用、数据压缩、同时支持离线和实时数据处理等优点,适用于日志压缩收集、监控数据聚合、流式数据集成等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档