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操作。这就意味着网络传输和磁盘存储方面会获得更好的压缩性能。
书还没有看完,暂时总结了这三点,后面有新的发现会再更新本文。
Kafka的性能分析的更多相关文章
- 硬核测试:Pulsar 与 Kafka 在金融场景下的性能分析
背景 Apache Pulsar 是下一代分布式消息流平台,采用计算存储分层架构,具备多租户.高一致.高性能.百万 topic.数据平滑迁移等诸多优势.越来越多的企业正在使用 Pulsar 或者尝试将 ...
- 使用 Spark 进行微服务的实时性能分析
[编者按]当开发者从微服务架构获得敏捷时,观测整个系统的运行情况成为最大的痛点.在本文,IBM Research 展示了如何用 Spark 对微服务性能进行分析和统计,由 OneAPM 工程师编译整理 ...
- Kafka工作流程分析
Kafka工作流程分析 生产过程分析 写入方式 producer采用推(push)模式将消息发布到broker,每条消息都被追加(append)到分区(patition)中,属于顺序写磁盘(顺序写磁盘 ...
- Kafka源码分析(三) - Server端 - 消息存储
系列文章目录 https://zhuanlan.zhihu.com/p/367683572 目录 系列文章目录 一. 业务模型 1.1 概念梳理 1.2 文件分析 1.2.1 数据目录 1.2.2 . ...
- 如何进行python性能分析?
在分析python代码性能瓶颈,但又不想修改源代码的时候,ipython shell以及第三方库提供了很多扩展工具,可以不用在代码里面加上统计性能的装饰器,也能很方便直观的分析代码性能.下面以我自己实 ...
- SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)
前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...
- SQL Server-聚焦NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL性能分析(十八)
前言 本节我们来综合比较NOT IN VS NOT EXISTS VS LEFT JOIN...IS NULL的性能,简短的内容,深入的理解,Always to review the basics. ...
- SQL Server-聚焦LEFT JOIN...IS NULL AND NOT EXISTS性能分析(十七)
前言 本节我们来分析LEFT JOIN和NOT EXISTS,简短的内容,深入的理解,Always to review the basics. LEFT JOIN...IS NULL和NOT EXIS ...
- SQL Server-聚焦EXISTS AND IN性能分析(十六)
前言 前面我们学习了NOT EXISTS和NOT IN的比较,当然少不了EXISTS和IN的比较,所以本节我们来学习EXISTS和IN的比较,简短的内容,深入的理解,Always to review ...
随机推荐
- (六)利用JackSon工具将JSON文件和对象互转
1. 需要下载JackSon工具,并导入到: 2. 编写html页面: <!DOCTYPE html> <html> <head> <meta charset ...
- K8s常用命令操作
K8s常用命令操作 一.kubectl命令补全 1.master安装命令补全,并临时生效 yum install -y bash-completion source /usr/share/bash-c ...
- c#.net从ftp下载文件到本地
c#.net从ftp下载文件到本地 /*首先从配置文件读取ftp的登录信息*/ ; ; , buffer_c ...
- webstrom报错 缺少JSCS 怎么解决
- Cas(02)——部署Cas Server
部署Cas Server Cas应用都需要有一个Cas Server.Cas Server是基于Java Servlet实现的,其要求部署在Servlet2.4以上版本的Web容器中.在此笔者将其部署 ...
- 获取网卡名称及其IP地址的方法
代码 # -*- coding: utf-8 -*- import psutil #获取网卡名称和其ip地址,不包括回环 def get_netcard(): netcard_info = [] in ...
- win10 1803 频繁死机,卡死不动
摘自微软官网的解决办法,我的目测好像是可以了. 小娜搜索框输入“PowerShell”选择在管理员命令提示符下键入以下命令: Dism /Online /Cleanup-Image /ScanHeal ...
- 如何实现批量截取整个网页完整长截图,批量将网页保存成图片web2pic/webshot/screencapture/html2picture
如何实现批量截取整个网页完整长截图,批量将网页保存成图片web2pic/webshot/screencapture [困扰?疑问?]: 您是否正受到:如何将网页保存为图片的困扰?网页很高很长截图截不全 ...
- 配置Linux描述网络安全CIA模型之可用性案例
在Linux中防御SYN型DOS攻击的方法比较常见的有: 1.增大队列SYN最大半链接数 2.利用SYN cookie技术 下面分别进行分析. 1.增大队列SYN最大半连接数 在LINUX中执行命 ...
- 【miscellaneous】关于gst ffmpeg插件的安装心得
1 一直通过软件源不能将ffmpeg插件进行安装 2 下载源码编译一直失败 说是需要依赖bad插件 3 bad插件安装不上在ubuntu下 解决办法: 应该直接查找ffmpeg插件的安装办法,不是只有 ...