异数OS 织梦师-水母(一)–消息队列篇


本文来自异数OS社区

github: https://github.com/yds086/HereticOS

异数OS社区QQ群: 652455784

异数OS-织梦师(消息中间件)群: 476260389

织梦师-水母 消息队列简介


这是一个使用异数OS技术实做的轻量级的消息中间件,和他的名字一样,重在表演,他不是一个功能复杂齐全的消息队列,使用者需要根据自己需求按照水母的原理去制作自己的超级武器,整个框架,协议,测试等代码算下来仅仅1000行,但已经是一个比较完整可用的消息队列了(topic没做,由nameserver去做吧),持久化方便测试使用虚完成,下一阶段会接入织梦师-水桶 RAM网盘存储方案,由于性能足够,单Broker相当于10-100台传统的消息队列,所以也不需要特意去制作集群方案,简单即优美,简单即可用,织梦师-水母作为异数OS的example放在git test目录下

与众不同的特性


1.生产者惰性QOS控制,在开启该特性后,生产者线程在队列满载后会被阻塞挂起,在队列可用时恢复并尝试重新入队,此特性在队列压力较大时可大大降低错误重试的网络IO需求,大大增加队列高负载时的可用性

2.低延迟低队列深度可用,织梦师-水母的延迟极低,内网生产者入队仅需10us延迟(82599),队列无压力时到消费者延迟20us,因此只要消费者满足需要,一般队列深度128即可稳定工作(异数OS系产品本身并不需要消息队列做削峰填谷,这是给老旧落后的产品做的

3.海量生产者特性,每Broker最大可接入1000W链接生产者(阻塞IO线程),因此有望直接在公网接受用户生产者检验,而不需要系统前端加LVS或者Nginx分流出多生产者。

4.高性能的消息队列,dpdk 82599双口 单CPU核环境,128生产者下,非批量消息,最大入队峰值4M每秒,到消费者最大2M峰值,批量则再根据批量规模和带宽来计算放大倍率,1200W链接最大160W消息入队,到消费者最大80W,后面会支持RSS 单Broker多队列聚合,成倍扩充单broker性能。

架构说明


织梦师-水母使用阻塞线程模型,因此相比异步IO的架构,结构非常简单轻量稳定可靠,代码和框架是对生产者,消费者模型的高度对应,你看到的框架图就是代码。

测试说明


CPU1 作为日志监控核,CPU3作为经纪人Broker,CPU5创建生产者消费者,成绩为10字节10个消息批量模式,批量仅供参考。

日志中参数可自己查阅git中代码做分析参考。

测试成绩


异数OS虚拟交换机下,128生产者,128消费者

异数OS虚拟交换机下,600W生产者,128消费者

异数OS DPDK双口交换,128生产者,128消费者

异数OS DPDK双口交换,600W生产者,128消费者

相关产品性能对比


以下成绩都是1 Borker下得到的性能,其他产品数据来自网络的大概参考数据。

非批量消息模式

测试特性 异数OS虚拟交换机128生产者 异数OS虚拟交换机600W生产者 异数OS-DPDK 128生产者 异数OS-DPDK 600W生产者 kafka RocketMQ
仅入队性能 4M 2M 3.3M 160W 12w 12w
入队出队性能 2M 1M 1.6M 80W 6w 6w
仅入队延迟 <1us <1us 10us 10us 10ms 10ms
入队到出队延迟 <1us <1us 20us 20us 10ms 10ms

批量消息模式

10字节消息批量入队出队,织梦师-水母测试用批量规模为10个消息批量

测试特性 异数OS虚拟交换机128生产者 异数OS虚拟交换机600W生产者 异数OS-DPDK 128生产者 异数OS-DPDK 600W生产者 kafka RocketMQ
仅入队性能 40M 20M 33M 1600W 200w 12w(不支持批量)
入队出队性能 20M 10M 16M 800W 100w 6w
仅入队延迟 <1us <1us 10us 10us 10ms 10ms
入队到出队延迟 <1us <1us 20us 20us 10ms 10ms

研发吐槽

RSS方案已经可以正常使用,双核ECHO 8M IO的样子,DPDK在异数OS负优化下,在海量链接环境中,终于不丢包,但代价是惨烈的,相对netmap方案,性能损失30%,实践推测这是由于DPDK polling在需要访存延迟较高的情况下,网卡无法利用mbuf进行数据传输,因此你开再多的mbuf都不济于事,而netmap由于使用驱动的硬件中断,因此即便不polling,网卡中断也能完成和netmap ring的数据传输,所以netmap的polling实际上反而更高效,有削峰填谷作用,为了拯救DPDK polling导致的网卡饥饿,异数OS做了更加细粒度的任务调度,并为DPDK网卡驱动做了ns精度级别的任务调度,动态控制DPDK tx发包规模,从而实现了600W(1200W)链接的0丢包。

异数OS 织梦师-水母(一)--消息队列篇的更多相关文章

  1. 异数OS 织梦师-云(五)-- 容器服务化,绿色拯救未来。

    . 异数OS 织梦师-云(五)– 容器服务化,绿色拯救未来. 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652 ...

  2. 异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡

    . 异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡 本文来自异数OS社区 github: https://github.com/yds086/HereticOS ...

  3. 异数OS 织梦师-纤手(二)-- LPC RPC篇

    异数OS 织梦师-纤手(二)– LPC RPC篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 ...

  4. 异数OS 织梦师-水桶(三)-- RAM共享存储方案

    . 异数OS 织梦师-水桶(三)– RAM共享存储方案 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455 ...

  5. 异数OS TCP协议栈测试(一)--数据传输篇

    异数OS TCP协议栈测试(一)--数据传输篇 本文来自异数OS社区 github:   异数OS-织梦师(消息中间件)群: 476260389 测试目标 数据传输IO性能测试,主要是建立连接后测试收 ...

  6. 异数OS国产CPU平台移植项目需求分析

    异数OS国产CPU平台移植项目需求分析 目录 异数OS国产CPU平台移植项目需求分析 项目立项背景 项目需求分析 异数OS性能指标简介 1.TCP协议栈性能测试 2.异数OS-织梦师-水母 消息队列性 ...

  7. 异数OS 星星之火(三)--异数OS-织梦师云 微服务编写入门

    . 异数OS 星星之火(三)–异数OS-织梦师云 微服务编写入门 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...

  8. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地

    . 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...

  9. 异数OS 星星之火(一)-- 异数OS-织梦师云 用户使用手册

    . 异数OS 星星之火(一)– 异数OS-织梦师云 用户使用手册 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...

随机推荐

  1. FatJar技术

    概念 将一个jar及其依赖的三方jar全部打到一个包中,这个包即为FatJar. 作用 作用: Jar包隔离,避免Jar冲突. 打包方式 maven-shade-plugin插件: spring-bo ...

  2. D Thanking-Bear magic

    题目描述 In order to become a magical girl, Thinking-Bear are learning magic circle. He first drew a reg ...

  3. koa2+koa-art-template利用日期管道实现在jat模板中将时间戳转为日期时间

    var sp = require("silly-datetime"); var render = require("koa-art-template"); va ...

  4. http://mirror2.openwrt.org/sources/

    http://mirror2.openwrt.org/sources/ Index of /sources/ ../ 1.0.4.3.arm 22-Dec-2008 20:29 93996 2.13. ...

  5. tensorflow学习笔记——ResNet

    自2012年AlexNet提出以来,图像分类.目标检测等一系列领域都被卷积神经网络CNN统治着.接下来的时间里,人们不断设计新的深度学习网络模型来获得更好的训练效果.一般而言,许多网络结构的改进(例如 ...

  6. 金蝶handler中 collection 代码片段理解

    1,AtsOverTimeBillBatchEditHandler中collection的理解 SelectorItemCollection selectors = new SelectorItemC ...

  7. 洛谷$P$3241 开店 $[HNOI2015]$ 主席树/点分治

    正解:主席树/动态点分治 解题报告: 传送门! $umm$淀粉质的话要是动态的我还不会$QAQ$,,,所以先写下主席树的题解昂$QwQ$ 题目大意是说,给定一棵树,树上每个点都有个值,然后有若干个询问 ...

  8. Win10系统中搭建服务器的方法

    1.我的电脑->找到并点击“控制面板”->点击“程序”->点击“启用或关闭Windows功能”2.按如下图方式选中复选框   服务器批量管理软件 3.点击确定,打开iis管理器(右键 ...

  9. 【Spring Cloud 源码解读】之 【如何配置好OpenFeign的各种超时时间!】

    关于Feign的超时详解: 在Spring Cloud微服务架构中,大部分公司都是利用Open Feign进行服务间的调用,而比较简单的业务使用默认配置是不会有多大问题的,但是如果是业务比较复杂,服务 ...

  10. 「算法竞赛进阶指南」0x01 最短Hamilton路径 解题报告

    题目在这里啊题目在这里~ Hamilton路径:将所有点都遍历刚好一次的路径 思路: 数据范围比较小(1~20),所以我们可以考虑暴力中的枚举 数组f[i][j]​ i的二进制表示选取了哪些点 j表示 ...