栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

kafka分区策略和压缩算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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,极大的减少网络资源开销
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1031867.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号