kafka处理大消息

标签:kafka   大消息   分布式系统    1970人阅读 评论(0)
分类:

kafka实现高吞吐主要是顺序写盘、pagecache、网络零拷贝技术特点。在模拟集群性能测试中发现当消息大于10KB时,集群出现吞吐下降及相应的时延问题。也就是说对于kafka来说大消息不能充分发挥高吞吐的特性(批处理)。所以对大消息如何处理呢?以下是个人建议及具体使用过程中配置参数供大家参考。

1. 处理大消息建议

  • 不传送大消息数据,建议使用共享存储相关技术手段(NAS、HDFS、S3、fastdfs等)

  • 要对大消息进行切片或切块,标识生产数据每块小于10KB(注意保证数据各个分片顺序性及落到同一分区中)

  • 压缩消息数据(XML、JSON),对共有特征的数据进行压缩传输,个人建议使用snappy。kafka特点存储时不做解压处理,只在实现consumer时自动解压缩。

2. kafka集群 Broker配置

  •  message.max.bytes(默认:1000000) – broker能接收消息的最大字节数,需< fetch.message.max.bytes(consumer端,否则无法消费)  

  • log.segment.bytes (默认: 1GB) – kafka数据文件的大小,确保这个数值大于一个消息的长度。

  •  replica.fetch.max.bytes (默认: 1MB)应>message.max.bytes ,否则无法复制数据丢失

     

3. Consumer配置

  • fetch.message.max.bytes (默认 1MB) – 消费者能读取的最大消息,大于 message.max.bytes


   总结:对于大消息可能会对集群及topic带来潜在的影响,需要合理设计内存(JVM)及分区数量。例如:若消息为1MB,集群若有1000分区,则就需要1GB内存。(一定要注意OOM异常)

查看评论

暂无评论

发表评论
  • 评论内容:
      
首页
团队介绍
发展历史
组织结构
MESA大事记
新闻中心
通知
组内动态
科研成果
专利
论文
项目
获奖
软著
人才培养
MESA毕业生
MESA在读生
MESA员工
招贤纳士
走进MESA
学长分享
招聘通知
招生宣传
知识库
文章
地址:北京市朝阳区华严北里甲22号楼五层 | 邮编:100029
邮箱:nelist@iie.ac.cn
京ICP备15019404号-1