项目经验之Kafka机器数量计算与如何选定分区数量

1.kafka机器数量计算

Kafka机器数量(经验公式)=2*(峰值生产速度*副本数/100)+1

先要预估一天大概产生多少数据,然后用Kafka自带的生产压测(只测试Kafka的写入速度,保证数据不积压),计算出峰值生产速度。再根据设定的副本数,就能预估出需要部署Kafka的数量。

比如我们采用压力测试测出写入的速度是10M/s一台,峰值的业务数据的速度是50M/s。副本数为2。

Kafka机器数量=2*(50*2/100)+ 1=3台

2.如何选定分区数量

  分区数量选择考虑因素:

  •   主题需要达到多大吞吐量?比如主题每秒写入速度为1GB/s
  •    从单个分区读取数据最大吞吐量是多少?每个分区一般都会有一个消费者,如果你知道消费者将数据写入数据库的速度不会超过50M/s,那么你也该知道,消费者从一个分区读取     数据的吞吐量不需要超过50M/s。
  • 可以通过类似的方法估算生产者向单个分区写入数据的吞吐量,不过生产者的速度一般比消费者快得多,所以最好为生产者多估算一些吞吐量。(这样的好处就是增加分区增加消费者提升并行度、负载均衡、提升消费速度
  • 每个broker包含的分区数量、可用的磁盘空间和网络带宽。
  • 如果消息是按照不同的键来写入分区的,那么为已有的主题新增分区就会很困难
  • 单个broker对分区个数是有限制的,因为分区越多,占用的内存越多,完成首领选举需要的时间也越长。
很显然,综合考虑以上几个因素,你需要很多分区,但不能太多。如果你估算出 题的
吐量和悄费者吞吐量,可以用主题吞吐量除以消费者吞吐量算出分区的个数。也就是说,
如果每秒钟要从主题上写入和读取 lGB 的数据,并且每个消费者每秒钟可以处理 50MB
的数据,那么至少需要 20 个分区。这样就可以让 20 个消费者同时读取这些分区,从而达
到每秒钟 lGB 的吞吐量。
如果不知道这些信息,那么根据经验,把分区的大小限制在 25G 以内 可以得到比较理想
的效果。

总结:

1.估算每天大概多少数据;

2.再计算每秒大概是多少数据;(单个主题)

3.再计算单台机子的每秒写入速度

4.根据此公式计算出Kafka机器数量(经验公式)=2*(峰值生产速度*副本数/100)+1

5.再根据主题每秒的吞吐量与消费者的吞吐量相除计算出分区数量(一分区对应一消费者)

6根据预估的kafka机器数与分区数定总机器数(一般一机一分区)

         

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

任错错

如果对您有帮助我很开心

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值