主题与分区

主题和分区是Kafka的两个核心概念,分区的划分不仅为Kafka提供了可伸缩性、水平扩展的功能,还通过多副本机制来为Kafka提供数据冗余以提高数据可靠性。

主题创建

主题和分区都是提供给上层用户的抽象,而在副本层面或更加准确地说是Log层面,才有实际物理的存在。同一个分区中的多个副本必须分布在不同的broken中,这样才能提供有效的数据冗余。

在这里插入图片描述

修改主题

目前Kafka只支持增加分区数,而不支持减少分区数。

为什么不支持减少分区数?

要实现该功能要考虑的因素很多。比如删除的分区中,消息该如何处理?
如果随着分区一起消息,则消息的可靠性得不到保障。
如果需要保存要考虑怎么保存,直接存储到现有分区的尾部,消息的时间戳就不会递增。如果分散查不到现有的分区,那么在消息量很大的时候,内部的数据复制会占用很大的资源,复制期间还需要考虑主题的可用性。
因此实现这个功能收益比较低,可以重新创建一个分区数较小的主题,然后现有主题中的消息按照既定的逻辑复制过去即可。

如何选择合适的分区数

需要结合具体的业务场景、机器性能来定。

并不是分区数越多,Kafka的吞吐率越高,因为消息的消费还要依赖消费者。且如果分区数越来越多,系统需要的文件句柄就会越多,假设超过系统中设置的文件句柄,可能会报错。(分区会在磁盘创建多个文件进行存储,每个文件需要打开一个文件句柄进行操作)。

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值