RSocket 与 gRPC 基准测试

搭建舞台
RSocket
RSocket 在应用网络上实现反应式语义。它是一种端到端强制执行背压和其他反应流概念的网络协议。

远程过程调用
gRPC 旨在解决多语言 RPC 的问题。它有两部分:protobuf IDL 和 HTTP/2 网络协议。

苹果到苹果?
从设计和组件来看,我们知道苹果之间的比较应该是 RSocket 与 HTTP/2。

然而,如何有效地比较两种协议呢?一种方法是使用相同的应用程序对它们进行基准测试。为了让应用程序在协议上运行,我们需要一个RPC SDK。 

RSocket 对编码器非常不可知。支持JSON、protobuf等定义。在此基准测试中,我们将使用带有 protobuf、Java RPC 和 Messagepack 的 RSocket。对于 gRPC,我们将仅使用 protobuf,因为它已被证明是 gRPC 性能最佳的编码器。

语境
在进行基准测试之前,我们先来比较一下两种协议的用例。基本上,RSocket 是为应用程序通信而设计的,HTTP/2 仍然是为处理 Web 流量而设计的。

但“旨在处理网络流量”是什么意思?嗯,这意味着客户端和服务器之间有明显的区别。会话方式多为请求/响应,也有流的可能性。请记住,TCP 并不强调客户端/服务器的区别。当我们使用 HTTP/2 协议时,服务器很难向客户端发出反向请求,更不用说使用相同的套接字连接来做到这一点了。

另一方面,应用程序到应用程序的通信则完全不同。应用程序是进行对话的对等体。谁是服务器、谁是客户端之间没有硬性界限,尤其是在微服务架构中。

为了覆盖大多数对话场景,RSocket 实现了四种类型的通信模型:

请求/响应(1 流)
请求/流(有限的许多流)
一劳永逸(无响应)
通道(双向流)
RSocket 不仅是多路复用的,而且发送者和接收者可以在保留相同套接字连接的同时切换角色。

基准测试
设置
两台服务器,每台均配备 4 核 Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz + 8G
JVM配置
 -Xmx2g -Xms2g -XX:+AlwaysPreTouch -XX:+UseStringDeduplication

中央处理器
我们还针对 10,000,000-request_512​​-concurrency_16-conns_16bytes-repsonse测试测试了 CPU 使用情况。使用Java分析工具,我们得到以下结果:

图片标题

结论
很明显,在 Java 版本中,RSocket SDK 轻松击败了 gRPC。从QPS、延迟、CPU消耗和可扩展性来看,RSocket在各个方面都比gRPC表现更好。

反应式 gRPC?
我们应该问的最后一个问题是:“当 gRPC 变得响应式时会发生什么?” 为了回答这个问题,我推荐Oleh Dokuka 和 Igor Lozynskyi 写的《Hands-On Reactive Programming in Spring 5》一书。Oleh Dokuka 是反应式gRPC 项目的主要贡献者之一。书中有一章比较了反应式 gRPC 与 RSocket。我引用:“唯一的区别是它支持更高粒度的流量控制。由于 gRPC 构建在 HTTP/2 之上,因此该框架采用 HTTP/2 流控制作为提供细粒度背压控制的构建块。然而,流量控制仍然依赖于以字节为单位的滑动窗口大小,因此对逻辑元素级别粒度的反压控制未被覆盖。”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/147744.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习c#的第二十一天

目录 C# 泛型(Generic) 泛型类型参数 类型参数的约束 约束多个参数 未绑定的类型参数 类型参数作为约束 notnull 约束 class 约束 default 约束 非托管约束 委托约束 枚举约束 类型参数实现声明的接口 泛型类 泛型方法 泛型和数组 泛型…

android studio编译SDL so库

一、下载源码 SDL官网 二、解压,拷贝android项目,并重新命名 2.1、解压 2.2,重命名项目名称(androidSDL)AndroidSDL Github 三、导入头文件和源文件,修改android.mk文件 3.1、在jni目录下创建SDL2文件…

亚马逊云科技云存储服务指南

文章作者:Libai 高效的云存储服务对于现代软件开发中的数据管理至关重要。亚马逊云科技云存储服务提供了强大的工具,可以简化工作流程并增强数据管理能力。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏…

在前端开发中,什么是CDN(Content Delivery Network)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

AM@函数展开成幂级数@间接法@常用麦克劳林幂级数展开公式

文章目录 间接法推导幂级数展开常用麦克劳林幂级数展开公式应用例例例 间接法推导幂级数展开 已知函数的幂级数展开公式间接推导其他函数幂级数 使用原始的推导公式推导函数的幂级数展开是繁琐不便的,需要分别计算各项系数 a n f ( n ) ( 0 ) n ! a_{n}\frac{f^{(n)}(0)}{n!}…

【RH850芯片】RH850U2A芯片平台Spinlock的底层实现

目录 前言 正文 1.RH850U2A上的原子操作 1.1 Link 1.2 Link generation 1.3 Success in storing 1.4 Failure in storing 1.5 Condition for successful storing 1.6 Loss of the link 1.7 示例代码 2.Spinlock代码分析 2.1 尝试获取Spinlock 2.2 释放Spinlock …

基于PyTorch搭建你的生成对抗性网络

前言 你听说过GANs吗?还是你才刚刚开始学?GANs是2014年由蒙特利尔大学的学生 Ian Goodfellow 博士首次提出的。GANs最常见的例子是生成图像。有一个网站包含了不存在的人的面孔,便是一个常见的GANs应用示例。也是我们将要在本文中进行分享的…

Spring Boot中使用MongoDB完成数据存储

我们在开发中用到的数据存储工具有许多种,我们常见的数据存储工具包括: 关系性数据库:使用表格来存储数据,支持事务和索引。(如:MySQL,Oracle,SQL Server等)。NoSQL数据…

Redis篇---第七篇

系列文章目录 文章目录 系列文章目录前言一、是否使用过 Redis Cluster 集群,集群的原理是什么?二、 Redis Cluster 集群方案什么情况下会导致整个集群不可用?三、Redis 集群架构模式有哪几种?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分…

OPPO Watch纯手机开启远程ADB调试

Wear OS手表中,我们可以直接在开发者设置中打开WiFi调试。但是这在OPPO等魔改Android系统中不再奏效。 需要什么?? 手表一台手机一个OTG转接头一个手表充电器一个 演示设备 手机: OPPO Find X手表: OPPO Watch 1代 …

Android——模块级build.gradle配置——applicationId和namespace

官方地址: 配置应用模块-applicationId和namespace了解 build.gradle 中的实用设置。https://developer.android.google.cn/studio/build/configure-app-module?hlzh-cn 产生那些异常场景: Android:Namespace not specified. Please spec…

3D重建相关

目录 <font colorblue>整个3D重建的过程是怎样的<font colorblue>体素、网格、点云之间的关系是什么<font colorblue>网格和体素化之间是什么关系<font colorblue>点云中的颜色怎么处理成最终3D模型上的颜色<font colorblue>点云还原的3D模型的颜…

Halcon (3):窗体常用语法使用

文章目录 文章专栏视频资源前言halcon图像使用加载图片示例绘制常用图像批量批注绘制 文章专栏 Halcon开发 视频资源 机器视觉之C#联合Halcon 前言 在使用halcon的算子之前&#xff0c;我们要先学会如何在图片上面进行标注。因为我们不仅要导出处理的结果&#xff0c;还要导出…

论文阅读:YOLOV: Making Still Image Object Detectors Great at Video Object Detection

发表时间&#xff1a;2023年3月5日 论文地址&#xff1a;https://arxiv.org/abs/2208.09686 项目地址&#xff1a;https://github.com/YuHengsss/YOLOV 视频物体检测&#xff08;VID&#xff09;具有挑战性&#xff0c;因为物体外观的高度变化以及一些帧的不同恶化。有利的信息…

Windows10电脑没有微软商店的解决方法

在Windows10电脑中用户可以打开微软商店&#xff0c;下载自己需要的应用程序。但是&#xff0c;有用户反映自己Windows10电脑上没有微软商店&#xff0c;但是不清楚具体的解决方法&#xff0c;接下来小编给大家详细介绍关于解决Windows10电脑内微软商店不见了的方法&#xff0c…

计算机的发展

硬件的发展 第一台电子数字计算机&#xff1a;ENIAC&#xff08;1946&#xff09;&#xff0c;作者&#xff1a;冯诺依曼&#xff0c;逻辑元件&#xff1a;电子管 bug&#xff1a;小虫子&#xff0c;会影响打点 Intel&#xff1a; 机器字长&#xff1a;计算机一次整数运算所能…

springcloudalibaba-3

一、Nacos Config入门 1. 搭建nacos环境【使用现有的nacos环境即可】 使用之前的即可 2. 在微服务中引入nacos的依赖 <!-- nacos配置依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-…

深入Rust:探索所有权和借用机制

大家好&#xff01;我是lincyang。 今天&#xff0c;我们将一起深入探索Rust语言中的一个核心概念&#xff1a;所有权和借用机制。 这些特性是Rust区别于其他语言的重要特点&#xff0c;它们在内存管理和并发编程中扮演着关键角色。 一、Rust所有权机制 1. 什么是所有权&#x…

Qt HTTP 摘要认证(海康球机摄像机ISAPI开发)

接到一个需求是开发下海康的球机,控制云台,给到我的是一个开发手册,当然了是海康的私有协议 ISAPI开发手册https://download.csdn.net/download/qq_37059136/88547425关于开发这块读文档就可以理解了,海康使用的是摘要认证,当然了海康已经给出使用范例 通过libcurl就可以直接连…