容器、Kubernetes、DevOps、微服务、云原生,这些技术名词的频繁出现,预兆着新的互联网技术时代的到来,大数据高并发将不再遥远,而是大部分项目都必须面对的,消息队列则是核心利器!成熟的消息队列产品很多,该如何技术选型?下面是翻译自Confluent 官方博客的消息队列性能对比测试。

原文地址:https://www.confluent.io/blog/kafka-fastest-messaging-system/

文:Yiru-Chen

来源:DotNetdaily

DotNetdaily

云硬件Kafka

性能测试

众所周知Kafka快,究竟有多快,跟其他队列相比又如何?这里选择了Kafka、RabbitMQ 和Apache Pulsar进行测试,关注点是系统吞吐量系统延迟,因为它们是生产中事件流处理系统的核心性能指标。具体来说,吞吐量测试测量队列在硬件(特别是磁盘和 CPU)使用方面的效率。延迟测试测量每个系统传递实时消息的差别,这是实时任务关键型应用程序以及微服务架构的核心要求。

最终结论:

吞吐量:Kafka 在三个系统中的吞吐量最高,是 RabbitMQ 的 15 倍,Pulsar 的 2 倍。

系统延迟:Kafka 在较高的吞吐量下提供了最低的延迟,同时还提供了强大的持久性和高可用性。RabbitMQ 可以实现比 Kafka 更低的端到端延迟,但只能在吞吐量低很多的情况下。

Kafak的高吞吐和低延迟是怎么实现的?Kafak有着极为优秀和出色的设计,一是页缓存技术+磁盘顺序写,一是零拷贝技术!

DotNetdaily

页缓存技术

磁盘顺序写

Kafka的消息数据是写在硬盘上的,保证了消息数据的可靠性,但写硬盘还能保证几十万条/秒的消息处理速度,是怎么做到的?答案是基于操作系统的页缓存和磁盘顺序写来实现的。

页缓存page cache,就是操作系统自己管理的内存缓存,也叫os cache。Kafka在写入消息时,是直接写入页缓存,然后由操作系统决定什么时候把页缓存里的数据刷入磁盘文件中。这样一来,消息写入性能就变成了写内存,不是在写磁盘,请看下图。

常规的磁盘写入都是随机写,随便找到文件的某个位置来写数据,这样的性能非常差,但是追加文件末尾按照顺序的方式来写数据的话,其写入性能跟写内存的性能都相差无几的。Kafak就是采用顺序写的方案,再加上页缓存的应用,才能做到在普通服务器上每秒写入几十万条消息,实现了数据写入的超高性能。

DotNetdaily

零拷贝技术

解决了写入问题,那消息读取呢?频繁的从磁盘读数据然后发给消费者,性能又是如何保证的?Kafka为了解决这个问题,在读数据的时候是引入零拷贝技术。

先看图1是常规的硬盘读写流程,操作系统读取硬盘数据后放在OS Cache,然后需要拷贝一次到Kafka进程,然后Kafka再将数据拷贝到Socket缓存才能发送到网卡,这样流程的性能当然没有保障。

再看图2, Kafka的设计为直接将操作系统OS Cache中的数据发送到网卡,跳过了两次拷贝数据的步骤,Socket缓存中仅仅会拷贝一个描述符过去,不会拷贝数据到Socket缓存,大大提升了数据读取性能。

DotNetdaily

分享大会第五期

Kafka作为海量数据大并发高吞吐的消息队列首选,在底层架构设计上有太多的技术点,有人说驾驭Kafka队列的难度较高。其实是路子没走对!

—张文亮《深入浅出Kafka:源码解析与实践原理》

此书言论一出,立马引发社区各种呵呵,都说是耍嘴皮子功夫?为了向大伙证明实力,早在7月份他就在筹划本次分享。 对Kafka感兴趣的小伙伴都来听听吧!DotNet社区分享大会第五期:高吞吐低延迟Kafka实战之道!

号称自己笔记都能出书的文亮在圈内大小算个人物了,尤其在Kafka技术领域“屡放厥词”,作为专业书的首席作者,文亮好歹也是做了多年开发的老架构师了,那驾驭Kafka如何才能走对路,今晚8点,是翻车还是封神,让我们拭目以待!

DotNetdaily 特别鸣谢:

感谢知乎直播 / 哔哩哔哩 / 腾讯会议等渠道小伙伴们的支持,为确保直播顺利进行,最大程度及时反馈大家的提问,请扫码预约!(预约后安排观看渠道)

DotNetdaily 本期送月饼

眼看中秋佳节将近,本期分享社区给大家准备了月饼礼盒!欢迎大家前来围观赢取!一起加油,让DotNet社区越来越好!

DotNetdaily

高吞吐低延迟Kafka实战之道!

社区分享会 09/25 20:00

主讲:张文亮

《深入浅出Kafka》首席作者

赶快扫码预约领取直播链接!

Confluent官博:Kafka最牛队列,性能15倍于RabbitMQ!相关推荐

  1. Pulsar和Kafka基准测试:Pulsar性能精准解析(完整版)

    关于 Apache Pulsar Apache Pulsar 是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息.存储.轻量化函数式计算为一体,采用计算与存储分离架构设计,支 ...

  2. 一文读懂:Kafka(分布式消息队列)的基础概念,教程

    [提前声明] 文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章 写作不易,转载请注明,谢谢! 代码案例地址: ?https://github.com/Mydreamandrea ...

  3. 【kafka】消息队列设计精要

    1.概述 转载:消息队列设计精要 好文章,建议大家去看原文. 消息队列已经逐渐成为企业IT系统内部通信的核心手段.它具有低耦合.可靠投递.广播.流量控制.最终一致性等一系列功能,成为异步RPC的主要手 ...

  4. java kafka分布式_JavaWeb项目架构之Kafka分布式日志队列

    架构.分布式.日志队列,标题自己都看着唬人,其实就是一个日志收集的功能,只不过中间加了一个Kafka做消息队列罢了. kafka介绍 Kafka是由Apache软件基金会开发的一个开源流处理平台,由S ...

  5. Kafka(消息队列原理,kafka定义,Kafka架构原理,kafka架构的工作流程)秒懂的kafka

    目录 什么是Kafka? 消息队列原理: 为什么要用Kafka? kafka的架构 kafka工作流程详解: 什么是Kafka? kafka是一个分布式消息队列 这个定义意味深长,记住容易,理解不易. ...

  6. 华为鸿蒙harmonyos-面向全场,华为正式官宣鸿蒙手机版相约6月2日,EMUI官博更名为HarmonyOS...

    经过长时间的预热,华为鸿蒙 OS手机版在经过三次测试后,终于于日前正式发布.近日@华为和@HarmonyOS官方官方宣布,鸿蒙 OS手机版将于6月2日发布.而且@EMUI之前也正式改名为@Harmon ...

  7. 面试官系统精讲Java源码及大厂真题 - 26 惊叹面试官:由浅入深手写队列

    26 惊叹面试官:由浅入深手写队列 人生的价值,并不是用时间,而是用深度去衡量的. 引导语 现在不少大厂面试的时候会要求手写代码,我曾经看过一个大厂面试时,要求在线写代码,题目就是:在不使用 Java ...

  8. Kafka 分布式消息队列介绍

    Kafka 分布式消息队列 类似产品有JBoss.MQ 一.由Linkedln 开源,使用scala开发,有如下几个特点: (1)高吞吐 (2)分布式 (3)支持多语言客户端 (C++.Java) 二 ...

  9. 魅族营销翻车,被骂上热搜,官博致歉并暂停运营两天...

    昨天,因为一张海报,魅族科技上了热搜.海报上写着,"魅族18系列5G安全纯净旗舰,祭奠被干掉的广告."而这,也被网友指出文案不合时宜.事后,魅族删除了海报,并发布了道歉声明,称官博 ...

最新文章

  1. 分析:Java的好处究竟在哪里?
  2. 云服务器的购买和宝塔面板的使用
  3. 如何利用C#编写网页投票器程序 如何使用代理来投票 代理IP来投票
  4. 快速排序 python 4种写法_[算法] 关于快速排序的四种写法
  5. Bootstrap Datatable 简单的基本配置
  6. bat脚本 -- 初步接触
  7. pycharm缩进对齐线_代码中的缩进线
  8. 软件测试算是后端吗,软件测试--前后端数据交互
  9. 通用型CRC校验算法
  10. SPI协议学习Cubmx——读写Flash W25Q64
  11. alpha-beta 极大极小值剪枝算法
  12. 前端用pdfjs实现预览PDF
  13. 嗅探器c语言源码,自己做的嗅探器
  14. keras 中的verbose详解
  15. python画旋转六边形
  16. SAP ABAP 取物料号的采购订单文本内容
  17. 全面 Severless 化只需要 7天!看南瓜电影的云上升级
  18. Oracle中日期函数的使用
  19. csgo删除机器人_csgo1v1去除机器人 | 手游网游页游攻略大全
  20. linux python2.7安装pymysql

热门文章

  1. jquery中$each()
  2. CodeForces 546B
  3. 隐藏UITableView当没有数据或数据不够的时候出现的分割线.
  4. tomcat对于web.xml的security-constraint使用的处理机制
  5. Teams Meeting App的 task 弹出框
  6. Teams bot的调用限制
  7. 在Microsoft Teams中的Visio协作
  8. 视频翻录_将DVD解密并复制到硬盘驱动器而无需翻录
  9. 记事本状态栏不会自动_如何在记事本中同时启用状态栏和自动换行
  10. Mysql 的子查询