异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡
.
异数OS 织梦师-Xnign(四)– 挑战100倍速Nginx,脚踩F5硬件负载均衡
本文来自异数OS社区
github: https://github.com/yds086/HereticOS
异数OS社区QQ群: 652455784
异数OS-织梦师(消息中间件 ,游戏开发方向)群: 476260389
异数OS-织梦师-Xnign(Nginx方向)群: 859548384
织梦师-Xnign 产品简介
异数OS 织梦师-Xnign 使用异数OS技术设计实现解除7层应用IO性能约束,带来http请求的10到100倍IO性能的提升,Xnign是Nginx的倒写,定位与Nginx目标类似,可以做Http cache静态页面加速,cgi可做精准L7业务负载均衡,可做大型网站前端流量接入,定制业务层精确分载。
与众不同的特性
- 简单的框架,实现简单,由于使用BIO方案,因此httpserver主框架代码仅30行,非常轻量级,复杂度仅有Nginx的万分之一。
- 高性能 ,由于异数OS 的IO加速,http请求处理性能是Nginx性能的100倍(静态页面cache 以及空负载cgi),实测每核长连接最大250W QPS,短连接120W QPS,最大带宽2.8GB/s(220WQPS),并发请求容量提升10倍,轻松实现300W活跃并发请求,理论推算可单路最大带200G双路400G网络流量。
- 方便定制 ,由于BIO以及RPC技术的简单易用,因此非常方便客户自行定制实现各类产品,技术难度降低很多。
- 精准业务层负载均衡方案, 通常的负载均衡方案可分为系统级负载均衡,比如F5 LVS,应用级负载均衡,比如Nginx,HAproxy,业务级负载均衡,比如消息队列,RPC等(rocketmq,dubbo),系统级负载均衡性能最高,但是负载均衡策略不够精确,通常是采集负载机系统的压力信息,如CPU 内存磁盘网络等资源占用来做负载均衡依据,但这类信息不能提前预警应用压力,通常发现时,目标负载系统已处于雪崩宕机的边缘,药石难救,因此受用面很窄,比如F5并不能为12306秒票业务做准确压力均衡分载,应用级负载均衡则相对更加准确,其可以收集目标应用的请求阻塞延迟情况来判断应用是否有过载可能,但其无法感知业务层负载,比如应用由于是分布式环境,其本身可能是空载,其CPU 以及IO都很空闲,但其业务请求队列可能已满载,后端数据库却在满载运行,这时再提交请求给应用,应用虽然能及时响应请求,但请求实际上都进入队列,这导致请求可能远远超时无法完成,因此业务级别的精确负载均衡成为更靠谱的需求,业务级负载均衡可以精准感知应用业务真实负载情况,根据真实业务负载压力,但一般的业务层负载均衡性能较低并发请求容量不足,并不能提供给门户站点入口使用,所以真正使用场合是在前面配合系统级负载均衡和应用级负载均衡构成三级负载均衡方案,这样就使得集群系统变的复杂并运维成本高昂,Xnign则通过高性能RPC技术以及消息队列技术为业务级负载均衡带来比系统级负载均衡高10倍的性能(F5 L7 CPS),因此大大降低负载均衡方案的运维成本和设计成本。
织梦师-Xnign 方案说明
1.HttpCreater 分布式环境中通过HttpCache提供的Rpc接口管理HttpCache,可以增删Xnign中HttpCache的静态页面.
2.HttpCache目前是一个静态页面的内存中的 HashMap。
3.HttpServer接收HttpClient的http请求,静态请求查询HttpCache并返回响应,cgi请求目前测试是个Echo,返回请求的cgi参数,未来会定制推送给业务的空闲Rpc线程,或者接入织梦师水母方案,以此实现精准的业务级负载均衡方案。
4. Rpc Manager为APP应用服务器提供RPC注册服务,APP应用服务器启动后在Rpc Manager注册关注的业务Topic,实现业务订阅,Rpc Manager为APP应用创建Rpc推送服务。
织梦师-Xnign测试成绩
测试项目分为静态页面的短连接性能测试,长连接性能测试,海量并发链接性能测试,理论每核最大带宽性能测试,cgi echo性能测试,测试环境都是单核2670v1 82599双口10G光纤 DPDK环境,HttpCache页面数量初始化为100W,请求池随机生成128K条,由于网卡条件约束,因此理论最大带宽测试使用异数OS软件交换机完成。
长连接128 Http请求线程400字节页面
长连接300W Http请求线程400字节页面
短连接128 Http请求线程400字节页面
短连接300W Http请求线程400字节页面
长连接128 Http请求线程1300字节页面理论带宽测试
2.8GB/s,理论单核可带满25G网卡,单节点预计带满200G,双节点400G。
长连接128 Http CGI请求线程Echo测试
相关性能对比
织梦师-Xingn 各项测试
| 测试特性 | 长连接128链接 | 长连接300W链接 | 短连接128并发线程请求 | 短连接300W并发线程请求 | 128线程长连接Cgi Echo |
|---|---|---|---|---|---|
| IOPS | 2.5M | 2.1M | 1.2M | 470K | 2.0M |
| 平均延迟 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 |
| 最小延迟 | 10us | 10us | 10us | 10us | 10us |
相关产品对比测试
数据来自网络,环境目标不同,选取目标产品最大性能值,成绩仅供参考。
引用的其他产品测试成绩
Nginx F-stack
https://github.com/F-Stack/f-stack
seastar 成绩引用
https://github.com/scylladb/seastar/wiki/HTTPD-benchmark
| 测试特性 | 织梦师-Xingn长连接 | 织梦师-Xingn短连接 | Seastar Httpd长连接 | F-stack Nginx短连接 (CPS) | F-stack Nginx长连接(RPS) | taomcat nio http | F5 VPR-LTM-C2400-AC(L7 CPS) |
|---|---|---|---|---|---|---|---|
| IOPS | 2.5M | 1.2M | 32W | 7W | 25W | 3000 | 100W(4核) |
| 平均延迟 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | 调用性能/链接数量 | |
| 最小延迟 | 10us | 10us | 1-10ms | 1-10ms | 1-10ms | 1-10ms |
其他
通过上面对比测试,相对Nginx,织梦师-Xnign可加速Http请求100倍,并发请求性能提高10倍以上,HttpCache算是可以独立落地的产品了,有需要对静态页面加速的同学可以联系购买,需要L7业务级负载均衡定制的可加社区咨询合作开发。
异数OS 织梦师-Xnign(四)-- 挑战100倍速Nginx,脚踩F5硬件负载均衡的更多相关文章
- 异数OS 织梦师-云(五)-- 容器服务化,绿色拯救未来。
. 异数OS 织梦师-云(五)– 容器服务化,绿色拯救未来. 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652 ...
- 异数OS 织梦师-水桶(三)-- RAM共享存储方案
. 异数OS 织梦师-水桶(三)– RAM共享存储方案 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455 ...
- 异数OS 织梦师-纤手(二)-- LPC RPC篇
异数OS 织梦师-纤手(二)– LPC RPC篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 ...
- 异数OS 织梦师-水母(一)--消息队列篇
异数OS 织梦师-水母(一)–消息队列篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异数O ...
- 异数OS TCP协议栈测试(四)--网卡适配篇
异数OS TCP协议栈测试(四)–网卡适配篇 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 652455784 异 ...
- 异数OS国产CPU平台移植项目需求分析
异数OS国产CPU平台移植项目需求分析 目录 异数OS国产CPU平台移植项目需求分析 项目立项背景 项目需求分析 异数OS性能指标简介 1.TCP协议栈性能测试 2.异数OS-织梦师-水母 消息队列性 ...
- 异数OS 星星之火(三)--异数OS-织梦师云 微服务编写入门
. 异数OS 星星之火(三)–异数OS-织梦师云 微服务编写入门 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...
- 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地
. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地 本文来自异数OS社区 github: https://github.com/yds086/Here ...
- 异数OS 星星之火(一)-- 异数OS-织梦师云 用户使用手册
. 异数OS 星星之火(一)– 异数OS-织梦师云 用户使用手册 本文来自异数OS社区 github: https://github.com/yds086/HereticOS 异数OS社区QQ群: 6 ...
随机推荐
- Linux 内核bin+attribute 结构二进制属性
sysfs 惯例调用所有属性来包含一个单个的人可读文本格式的值. 就是说, 只是偶然地很 少需要来创建能够处理大量二进制数据的属性. 这个需要真正地只出现在必须传递数据, 不可动地, 在用户空间和设备 ...
- js实现instanceof
instanceof 是通过原型链判断的,A instanceof B, 在A的原型链中层层查找,是否有原型等于B.prototype,如果一直找到A的原型链的顶端null,仍然不等于B.pr ...
- Adam Harley的卷积神经网络3D视觉化模型
https://m.huxiu.com/article/138857/1.html 最近 Google Tensorflow 做了一个非常直观的神经网络 playground.不夸张地说,现在每个人都 ...
- 用Tasker实现收到Android手机短信自动转发到邮箱
发送短信到邮箱的原理与 <用Tasker实现收到Android手机短信自动转发到邮箱>有些类似. 发送短信到邮箱是利用Ifttt这个服务将短信转发到邮箱中.Ifttt服务的可扩展性很强, ...
- [梁山好汉说IT] 容器概念在北宋社会的应用
[梁山好汉说IT] 容器概念在北宋社会的应用 0x00 摘要 如何对没有软件开发经验的人解释容器? 集装箱真的能够完美解释容器嘛? 除了集装箱还有其他常见实体能够解释容器嘛? 我找到了一个能够 和集装 ...
- 构建锁与同步组件的基石AQS:深入AQS的实现原理与源码分析
Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如ReentrangLock.Semaphore,它们的实现都用到了一个共同的基类--AbstractQueuedS ...
- flask的url处理器(url_defaults和url_value_preprocessor)
url处理器的作用:对于一部分资源, 你并不是很清楚该如何设定其 URL 相同的部分.例如可能有一些URL包含了几个字母来指定的多国语言语种,但是你不想在每个函数里都手动识别到底是哪个语言 rom f ...
- Python学习3月5号【python编程 从入门到实践】---》笔记(2)
1.操作列表 一.遍历整个列表,并且想对每一个元素执行相同的操作.##这里就不得不提起我们一直用的For函数了. 二.深入地研究循环 (1)for i in superheroes:##首先读取其 ...
- 关于SAM和广义SAM
关于SAM和广义SAM 不是教程 某些思考先记下来 SAM 终于学会了这个东西诶...... 一部分重要性质 确定一个重要事情,S构造出的SAM的一个重要性质是当且仅当对于S的任意一个后缀,可以从1号 ...
- $CF1063B\ Labyrinth$ $01$最短路/$01BFS$
\(Des\) 有一个网格图,上面的格子分为空地和障碍,障碍是不可以走的.现在从给定的起点出发开始到处乱走,最多可以往左走\(l\)次,往右走\(r\)次.求可能到达的点数. \(Sol\) 如果只限 ...