kafka分区策略和压缩算法

1.分区策略:

分区parition:通过分区可以实现负载均衡和提高吞吐量。将消息发送到多个partition中。

1.1 分区策略类型:
  • 默认分区策略

    • 指定key: 通过计算key的hash值,然后对分区数求模
      Utils.toPositive(Utils.murmur2(keyBytes)) % numPartitions;
      
    • 没有指定key:使用轮询(粘性分区策略)
      轮询到一个分区后,消息包大小到达默认16k或者达到最大等待时间linger.ms,才开始轮询下一个
  • 随机分区

  • 自定义分区策略
    实现Partitioner接口,然后设置分区策略时候,使用自定义的分区策略类

1.2 使用

初始化kafkaproducer时候,配置属性里加上partitioner.class的配置
例:properties.put(“partitioner.class”, MyPartitioner.class.getName());

2.压缩算法

目的是,用cpu时间去减少磁盘空间和网络I/O传输。
Producer 端压缩、Broker 端保持、Consumer 端解压缩

2.1压缩算法类型:

吞吐量方面:LZ4 > Snappy > zstd 和 GZIP
压缩比方面,zstd > LZ4 > GZIP > Snappy
在这里插入图片描述

2.2 使用

producer端指定compression.type配置项(broker端配置也有该项)
例:props.put(“compression.type”, “gzip”);

2.3 建议项
  • 如果broker端也指定了压缩算法,那么producer指定的最好和broker保持一致。否则消息到达broker端会重新解压缩,再按照broker压缩算法压缩。默认情况下,broker使用的是produer配置的算法
  • 建议只有在producer cpu资源充裕的情况下,才开启压缩,否则会使机器cpu资源耗尽,反而得不偿失;
  • 如果宽带资源比较紧张,建议开启压缩,可以使用zstd,极大的减少网络资源开销
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值