前言

用过消息中间件的都知道能够解决业务中的性能瓶颈,那么消息中间件如何实现每秒几十万的高并发写入?
消息中间件存储

首先理解一点,消息中间件一般都是存储在磁盘上的,大家都知道直接在磁盘读写是有性能瓶颈的,不可能达到每秒几十万的吞吐量,那么消息中间件是怎么保证读写性能的呢?

写数据

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缓存区。

这样我们就减少了一半的数据拷贝,缩短时间。

「中间件」消息中间件如何实现每秒几十万的高并发写入?相关推荐

  1. 阿里年薪百万架构师分享「亿级并发系统架构设计」全彩版技术手册,只能说其实高并发不难

    什么是高并发? 并发是操作系统领域的一个概念,指的是一段时间内多任务流交替执行的现象 高并发用来指大流量.高请求的业务情景,比如春运抢票,电商双十一,秒杀大促等场景. 高并发的指标有 响应时间:系统对 ...

  2. 每秒处理10万高并发订单支付系统架构

    一.库分表 在redis,memcached等缓存系统盛行的互联网时代,构建一个支撑每秒十万只读的系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等.支付系统要处理每秒十万笔订单, ...

  3. Kafka如何实现每秒上百万的超高并发写入?

    这篇文章来聊一下 Kafka 的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafka 是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的 Kafk ...

  4. Kafka如何实现每秒上百万的超高并发写入?掌握好面试给你打满分!

    这篇文章来聊一下 Kafka 的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafka 是高吞吐低延迟的高并发.高性能的消息中间件,在大数据领域有极为广泛的运用.配置良好的 Kafk ...

  5. 每秒处理10万高并发订单的乐视集团支付系统架构分享【转】

    转自:https://www.cnblogs.com/hackxhao/p/5496254.html 随着乐视硬件抢购的不断升级,乐视集团支付面临的请求压力百倍乃至千倍的暴增.作为商品购买的最后一环, ...

  6. 加米谷大数据干货:Kafka如何实现每秒上百万的超高并发写入?

    加米谷大数据为你带来这篇文章来聊一下 Kafka 的一些架构设计原理,这也是互联网公司面试时非常高频的技术考点. Kafka 是高吞吐低延迟的高并发.高性能的消息中间件,有极为广泛的运用.配置良好的 ...

  7. 应对「高并发」的思路

    大家好,我是Z哥. 最近正好在编写一套新的面试题,其中有一道是与高并发相关的.出题的目的是想了解一下候选人面对大流量场景下的优化思路.在出这道题的过程中,我自己也梳理了一下自己对这个问题的思路. 然后 ...

  8. 12岁女孩自学成才考上亚利桑那大学,博士母亲的家庭教育造就「天才少女」...

    12岁的时候很多人可能刚小学毕业,美国一个黑人小女孩已经在家自学完成了所有高中课程,并成功申请亚利桑那州立大学,她说这一切都是NASA的梦在驱动着她. >>>> Alena W ...

  9. 了解中间件与消息中间件

    该笔记大部分搬运B站学相伴的RabbitMQ,顺便把图文合并记录,便于回顾,仅用于学习! 视频地址:https://www.bilibili.com/video/BV1dX4y1V73G 作者真的非常 ...

  10. 极客公园-零基础看懂全球 AI 芯片:详解「xPU」

    https://www.sohu.com/a/169062329_413980 随着 AI 概念火爆全球,做 AI 芯片的公司也层出不穷.为了让市场和观众能记住自家的产品,各家在芯片命名方面都下了点功 ...

最新文章

  1. 服务器的智能监控管理结束,通过服务器监控告警进行异常排障
  2. 批处理详细教程(五)
  3. 大一萌新看过来,C语言学到什么程度,才能“毕业不失业”!
  4. CISCO认证涨价了
  5. Linux开机报write same failed manually zeroing错误
  6. 17 款可视化工具,让你的数据更美观!
  7. atitit.报表最佳实践oae 与报表引擎选型
  8. 【设计模式专题】Singleton
  9. 最强人工智能 OpenAI 极简教程
  10. java开发是什么_java开发到底是做什么的
  11. JavaEE 企业级分布式高级架构师(七)MongoDB学习笔记(3)
  12. 新梦想干货——软件测试中的43个功能测试点(下)
  13. day02-08 python基础语法
  14. Ubuntu下邮件服务器的配置——SendMail
  15. AK acm/oj.Print a Chessboard
  16. JSP实现文件下载功能
  17. VBA禁止更改工作表名称
  18. 7-2 高精度求累加和 分数 25作者 胡伟平单位 广西科技大学
  19. 追加贷显示服务器出错,小蜜蜂财务软件常见问题汇总
  20. vue+echarts+自适应 实现可视化大屏展示效果

热门文章

  1. visual studio 2013 快速安全ocx(ActiveX控件)开发
  2. 复制过去格式不一样_疫情过去后,打卡不一样的过山车
  3. hadoop 代码中获取文件名
  4. c语言万年历自动翻页,C语言实现万年历效果
  5. java dao模式的优缺点_Java入门:浅谈DAO模式
  6. python初级工程师面试题_Python工程师面试题
  7. find linux 目录深度_15种方法找出Linux系统中最大的N个文件,你懂几种?
  8. oracle 字段带数字,Oracle字符串中包含数字、特殊符号的排序
  9. 计算机科学与技术实践教学,计算机科学与技术实践教学方法_精编版.doc
  10. innodb为什么写入数据快_重要,知识点:InnoDB的插入缓冲