• Kafka的性能分析


    都说Kafka的吞吐量很大,但是我一直不直到Kafka为何有如此大的吞吐量。最近在看Kafka权威指南,陆陆续续得到了如下结论:

    1、分区:Kafka支持分区,这样就支持多个生产者和多个消费者同时请求,每个分区在不同的物理节点上,提高了整个broker集群的吞吐;

    2、不支持针对每一条记录做持久化(rabbitMq支持):Kafka的持久化策略是针对segment的,通过log.segment.bytes这个配置项来控制消息的持久化,比如该参数设置为100M,那么当这个segment达到100M时做一次持久化,这样减少了磁盘的I/O。那么不禁要问,要是当segment达到90M时该broker挂掉了咋办,数据不会丢失么?Kafka是通过对分区设置多副本来保证可靠性的。

    3、第三点和第二点类似,都是对大文件进行分段带来的好处:查找和删除大文件是很费时的,所以Kafka把分区分成了若干个片段。这样便于索引和删除。

    4、零复制技术:其他DB在发送给消费者数据时会把数据从磁盘拷贝到内核空间的缓存页中,应用程序将缓存页中的数据读入用户空间,做解压和再压缩处理后,又回写到socket发送缓冲区,然后发送给消费者。而Kafka则将producer发送来的数据按照原有的格式存到磁盘上,然后只是将磁盘数据原封不动的拷贝到内核缓存页,然后将数据从页面缓存直接发送到网络中,避免了重复复制。

    5、支持生产者使用压缩功能,可以包装消息,支持batch操作。这就意味着网络传输和磁盘存储方面会获得更好的压缩性能。

    书还没有看完,暂时总结了这三点,后面有新的发现会再更新本文。

  • 相关阅读:
    封装logging模块,创建日志器
    excel的读写封装,利用openpyxl
    利用yaml封装配置文件模块
    自动生成小学四则运算项目(更新)
    基于cmmi的软件工程及实训指导 第一章 读后感
    第一次数据库学习
    第一个爬虫和测试
    预测球队成绩
    第一个网页
    科学计算与可视化
  • 原文地址:https://www.cnblogs.com/howo/p/11087438.html
Copyright © 2020-2023  润新知