「中间件」消息中间件如何实现每秒几十万的高并发写入?
前言
用过消息中间件的都知道能够解决业务中的性能瓶颈,那么消息中间件如何实现每秒几十万的高并发写入?
消息中间件存储
首先理解一点,消息中间件一般都是存储在磁盘上的,大家都知道直接在磁盘读写是有性能瓶颈的,不可能达到每秒几十万的吞吐量,那么消息中间件是怎么保证读写性能的呢?
写数据
1、消息中间件是基于操作系统的页缓存来实现文件写入的。操作系统本身有一层缓存,叫做page cache,是在内存里的缓存,我们也可以称之为os cache,意思就是操作系统自己管理的缓存。
我们在写入磁盘文件的时候,可以直接写入这个os cache里,也就是仅仅写入内存中,接下来由操作系统自己决定什么时候把os cache里的数据真的刷入磁盘文件中。也就是说我们写是挨个写入缓存中,系统批量写入磁盘。
2、写磁盘文件并不是随机添加的,而是在文件末尾追加的,这也就保证了消息在单个磁盘文件的顺序性(多分区就不能保证顺序了)。
读数据
1、消息中间件读数据也是从os cache中读取的,如果os cache中没有,系统会去磁盘中批量读取一部分数据,放入os cache中。
2、消息中间件用到一种叫做零拷贝的技术。
一般我们完成一次网络传输拷贝,需要以下几步:
1)调用read系统接口,将数据从磁盘文件拷贝到读内核缓冲区。
2)从读内核缓冲区拷贝到用户空间缓存;
3)调用write系统接口,将数据从用户空间拷贝到写内核空间缓冲区。
4)将数据从内核空间缓冲区拷贝到socket缓存冲,准备网络传输。
上面我们可以看出,一共进行了四次数据拷贝。使用零拷贝技术,我们调用mmap接口,在用户空间和内核空间共享一段内存。这样我们就只需要两次拷贝。
1)将磁盘文件数据拷贝到mmap共享内存区。
2)将数据从mmap共享内存区拷贝到socket缓存区。
这样我们就减少了一半的数据拷贝,缩短时间。
「中间件」消息中间件如何实现每秒几十万的高并发写入?相关推荐
- 阿里年薪百万架构师分享「亿级并发系统架构设计」全彩版技术手册,只能说其实高并发不难
什么是高并发? 并发是操作系统领域的一个概念,指的是一段时间内多任务流交替执行的现象 高并发用来指大流量.高请求的业务情景,比如春运抢票,电商双十一,秒杀大促等场景. 高并发的指标有 响应时间:系统对 ...
- 每秒处理10万高并发订单支付系统架构
一.库分表 在redis,memcached等缓存系统盛行的互联网时代,构建一个支撑每秒十万只读的系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等.支付系统要处理每秒十万笔订单, ...
- Kafka如何实现每秒上百万的超高并发写入?
这篇文章来聊一下 Kafka 的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafka 是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的 Kafk ...
- Kafka如何实现每秒上百万的超高并发写入?掌握好面试给你打满分!
这篇文章来聊一下 Kafka 的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafka 是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的 Kafk ...
- 每秒处理10万高并发订单的乐视集团支付系统架构分享【转】
转自:https://www.cnblogs.com/hackxhao/p/5496254.html 随着乐视硬件抢购的不断升级,乐视集团支付面临的请求压力百倍乃至千倍的暴增.作为商品购买的最后一环, ...
- 加米谷大数据干货:Kafka如何实现每秒上百万的超高并发写入?
加米谷大数据为你带来这篇文章来聊一下 Kafka 的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafka 是高吞吐低延迟的高并发.高性能的消息中间件,有极为广泛的运用.配置良好的 ...
- 应对「高并发」的思路
大家好,我是Z哥. 最近正好在编写一套新的面试题,其中有一道是与高并发相关的.出题的目的是想了解一下候选人面对大流量场景下的优化思路.在出这道题的过程中,我自己也梳理了一下自己对这个问题的思路. 然后 ...
- 12岁女孩自学成才考上亚利桑那大学,博士母亲的家庭教育造就「天才少女」...
12岁的时候很多人可能刚小学毕业,美国一个黑人小女孩已经在家自学完成了所有高中课程,并成功申请亚利桑那州立大学,她说这一切都是NASA的梦在驱动着她. >>>> Alena W ...
- 了解中间件与消息中间件
该笔记大部分搬运B站学相伴的RabbitMQ,顺便把图文合并记录,便于回顾,仅用于学习! 视频地址:https://www.bilibili.com/video/BV1dX4y1V73G 作者真的非常 ...
- 极客公园-零基础看懂全球 AI 芯片:详解「xPU」
https://www.sohu.com/a/169062329_413980 随着 AI 概念火爆全球,做 AI 芯片的公司也层出不穷.为了让市场和观众能记住自家的产品,各家在芯片命名方面都下了点功 ...
最新文章
- 服务器的智能监控管理结束,通过服务器监控告警进行异常排障
- 批处理详细教程(五)
- 大一萌新看过来,C语言学到什么程度,才能“毕业不失业”!
- CISCO认证涨价了
- Linux开机报write same failed manually zeroing错误
- 17 款可视化工具,让你的数据更美观!
- atitit.报表最佳实践oae 与报表引擎选型
- 【设计模式专题】Singleton
- 最强人工智能 OpenAI 极简教程
- java开发是什么_java开发到底是做什么的
- JavaEE 企业级分布式高级架构师(七)MongoDB学习笔记(3)
- 新梦想干货——软件测试中的43个功能测试点(下)
- day02-08 python基础语法
- Ubuntu下邮件服务器的配置——SendMail
- AK acm/oj.Print a Chessboard
- JSP实现文件下载功能
- VBA禁止更改工作表名称
- 7-2 高精度求累加和 分数 25作者 胡伟平单位 广西科技大学
- 追加贷显示服务器出错,小蜜蜂财务软件常见问题汇总
- vue+echarts+自适应 实现可视化大屏展示效果
热门文章
- visual studio 2013 快速安全ocx(ActiveX控件)开发
- 复制过去格式不一样_疫情过去后,打卡不一样的过山车
- hadoop 代码中获取文件名
- c语言万年历自动翻页,C语言实现万年历效果
- java dao模式的优缺点_Java入门:浅谈DAO模式
- python初级工程师面试题_Python工程师面试题
- find linux 目录深度_15种方法找出Linux系统中最大的N个文件,你懂几种?
- oracle 字段带数字,Oracle字符串中包含数字、特殊符号的排序
- 计算机科学与技术实践教学,计算机科学与技术实践教学方法_精编版.doc
- innodb为什么写入数据快_重要,知识点:InnoDB的插入缓冲