多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理。对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输;由于上层应用协议的制订问题,导致了很多传统服务并不能支持多路复用;如:http1.1,sqlserver和redis等等,虽然有些服务提供批量处理,但这些处理都基于一个RPS下。下面通过图解来了解释单路和多路复用的区别。

单路存在的问题

每个请求响应独占一个连接,并独占连接网络读写;这样导致连接在有大量时间被闲置无法更好地利用网络资源。由于是独占读写IO,这样导致RPS处理量由必须由IO承担,IO操作起来比较损耗性能,这样在高RPS处理就出现性能问题。由于不能有效的合并IO也会导致在通讯中的带宽存在浪费情况,特别对于比较小的请求数据包。通讯上的延时当要持大量的RPS那就必须要有更多连接支撑,连接数增加也对资源的开销有所增加。

多路复用的优点

多路复用可以在一个连接上同时处理多个请求响应,这样可以大大的减少连接的数量,并提高了网络的处理能力。由于是共享连接不同请求响应数据包可以合并到一个IO上处理,这样可以大大降低IO的处理量,让性能表现得更出色。

通过多路复用实现百万级RPS

多路复用是不是真的如此出色呢,以下在.net core上使用多路复用实现单服务百万RPS吞吐,并能达到比较低的延时性。以下是测试流程: 

测试消息结构

本测试使用了Protobuf作为基础交互消息,毕竟Protobuf已经是一个二进制序列化标准了。

请求消息

响应消息

** 服务端处理代码**

服务响应对象内容

接收消息后放入队列,然后由队列处理响应,设置请求相应请求时间并记录总处理消息计数。

客户端请求代码

客户端测试发起代码

整个测试开启了10个连接,在这10个连接的基础上进行请求响应复用。

测试配置

测试环境是两台服务器,配置是阿里云上的12核服务器(对应的物理机应该是6核12线程)

服务和客户端的系统都是:Ubuntu 16.04

Dotnet core版本是:2.14

测试结果

客户端统计结果

服务端统计信息

带宽统计

测试使用了10个连接进行多路复用,每秒接收响应量在100W,大部分响应延时在1-3毫秒之间

下载测试代码:https://github.com/IKende/BeetleX/blob/master/samples/MultiplexingConnectionTest.zip

原文地址: https://www.cnblogs.com/smark/p/9836104.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

.net core通过多路复用实现单服务百万级别RPS吞吐相关推荐

  1. 多路复用实现单服百万级别RPS吞吐

    多路复用其实并不是什么新技术,它的作用是在一个通讯连接的基础上可以同时进行多个请求响应处理.对于网络通讯来其实不存在这一说法,因为网络层面只负责数据传输:由于上层应用协议的制订问题,导致了很多传统服务 ...

  2. 三年服务百万家居设计师、十万商家,淘宝躺平平台的底气在哪里?

    文|曾响铃 来源|科技向令说(xiangling0815) 必须承认,数字化家装经过多年狂奔突袭后,远远没有达到大众.舆论和资本预想的结果. 2018年,互联网家装在行业中的渗透率还不到6%(数据来源 ...

  3. 架构设计基础:单服务.集群.分布式,基本区别和联系

    一.分布式简介 1.架构简介 现在的互联网,几乎常见的复杂系统都会使用分布式架构,如果在不清楚概念之前,刚接触分布式架构这个名词会感觉十分的高大上,其实在对比单服务,集群服务之后,你就会发现本质上都是 ...

  4. ASP.NET Core WebApi构建API接口服务实战演练

    一.ASP.NET Core WebApi课程介绍 人生苦短,我用.NET Core!提到Api接口,一般会想到以前用到的WebService和WCF服务,这三个技术都是用来创建服务接口,只不过Web ...

  5. 榆熙电商:拼多多商家怎样开通电子面单服务?有何优势?

    作为拼多多商家,产品发货是常态,但是纸质的面单一套整下来对于商家来说还是挺麻烦的,所以平台为了减轻商家们的工作量而推出了电子面单服务,那么作为商家的你对电子面单服务又了解多少呢?一起和成都榆熙小编来看 ...

  6. (八)Azkaban单服务安装

    文章目录 1.azkaban的编译 1.1azkaban的编译 1.2编译之后需要的安装文件列表如下 2.azkaban单服务模式安装与使用 2.1解压 2.2修改两个配置文件 2.3启动solo-s ...

  7. 【网单服务端】团队索尼克赛车PC端赛车类游戏单机服务端

    [网单服务端]团队索尼克赛车PC端赛车类游戏单机服务端,应该有人喜欢这类游戏 下载链接:https://pan.baidu.com/s/1ds_xFq1Rd1_xC4515BRGXw  提取码:soh ...

  8. UPI收单服务平台证书生成及使用指引

    UPI收单服务平台证书生成及使用指引 1 证书生成 证书生成可以登录到Linux服务器上使用如下命令生成: Lenght 2048 : openssl genrsa -out private_sign ...

  9. 客客威客V3.3外包任务发布接单服务平台

    客客威客V3.3外包任务发布接单服务平台,一站式软件开发外包服务平台响应式源码,赠送安装指导文档+二次开发手册 后台管理包括:项目众包,数据直观统计.财务管理.任务审核.支付宝和微信在线支付配置 功能 ...

最新文章

  1. 一些NLP的面试问题
  2. Struts07---访问servlet的API
  3. vs--bookmark用法
  4. Linux中实用但很小众的11个炫酷终端命令
  5. mysql 备份 master_如何配置MYSQL的MASTER---SLAVE复制备份?
  6. 9 WM层面 临时仓储类型的仓位 主数据不存在
  7. django基础篇05-Form验证组件
  8. aspx获取aspx.cs中的变量和方法
  9. 将beyond compare设置为svn的代码比较工具
  10. mac 谷歌浏览器必备插件
  11. Vue 腾讯防水墙验证
  12. 2021年茶艺师(初级)考试资料及茶艺师(初级)找解析
  13. 浅谈大型互联网的企业入/侵及防护策略
  14. re匹配截至到第一个中文_Python中的正则表达式(re模块)!非常重要!
  15. eclipse官网下载安装教程
  16. SpringBoot引入Dubbo问题解析
  17. linux diff使用方法,Linux diff 使用教程
  18. 前端换肤功能如何实现
  19. 计算方法:三次样条插值原理
  20. 解析新文娱产业的三点趋势与四大难题

热门文章

  1. 限流算法(记录cyc大佬的专栏)
  2. Nodejs Guides(四)
  3. 光伏领跑者火热前行 可靠性护航“长跑”
  4. POJ 2135 最小费用最大流
  5. Linux IPC实践(6) --System V消息队列(3)
  6. 怎么实现动态设置静态文件存储目录?
  7. C#中的类型~存储~变量
  8. 和我一起来分析某药品仓储管理系统 卡死现象
  9. 再见,REST,你好,gRPC
  10. 安装VSCode作为常用的文本编辑器