kafka(二:生产者消息分区机制原理剖析)

分区的作用:

    分区的作用是提供负载均衡的能力,实现系统的高伸缩性。不同的分区能够被分配到不同节点上,而数据的读写操作也都是针对分区这个粒度而进行的,这样每个节点都能独立执行各自分区的读写请求。还可以通过添加新的节点机器来增加整体系统的吞吐量。

分区策略:

分区策略是决定生产者将消息发送到哪个分区的算法。Kafka 提供了默认的分区策略,同时也支持自定义分区策略,实现如下接口自定义parttion方法即可。

轮询策略 round-robin,即顺序分配。消息会按顺序一个一个的分配给所有分区。这是kafka默认的分区策略。轮询策略实现了负载均衡,它能保证消息最大限度地被平均分配到所有分区上。

随机策略 randomness,将消息随机的放置到任意一个分区上。

按消息键保序策略,为每条消息标记上一个消息键。这个key可以是业务id,商品编号等。一旦消息被定义了 Key,那么就可以保证同一个 Key 的所有消息都进入到相同的分区里面。

 

生产者压缩算法:Producer 端压缩、Broker 端保持、Consumer 端解压缩。

  压缩是空间换时间的思想,用 CPU 时间去换磁盘空间或网络 I/O 传输量。

发生压缩算法的两个位置:消息生产者和Broker端。如下图生产端定义了compression.type,参数为gzip。

大部分情况下 Broker 从 Producer 端接收到消息后仅仅是原封不动地保存而不会对其进行任何修改,有两种例外情况让 Broker 重新压缩消息。

1 生产端和producer端定义了不同的压缩算法。    2 broker端发生了消息格式转换,为了兼容老版本的数据,新消息向老版本格式转换,这个过程设计消的压缩和重压缩,很消耗性能并且丧失零拷贝特性。

何时解压缩:Consumer 解压缩还原成之前的消息。Consumer会从消息中得知消息生产端传递过来时的压缩算法,再进行解压缩。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值