当前位置: 首页 >  新闻中心  >   >  正文

新一代通信协议—— RSocket

  • 2023-03-04 23:39:46 来源:程序员客栈

一、简介

RSocket 是一种二进制字节流传输协议,位于 OSI 模型中的5~6层,底层可以依赖 TCP、WebSocket、Aeron 协议。最初由 Netflix 开发,支持 Reactive Streams。其开发背后的动机是用开销更少的协议取代超文本传输协议(HTTP),HTTP 协议对于许多任务(如微服务通信)来说效率低下。

二、设计目标

支持对象传输,包括 Fire-and-Forget、Request/Response、Request/Stream、Channel


(资料图)

支持应用层流量控制

支持单连接双向、多次复用

支持连接修复

更好的使用WebSocket和Aeron协议

三、消息驱动

网络通信是异步的,RSocket 协议包含这一点,并将所有通信建模为在单个网络连接(TCP)上的、多路复用的消息流,在等待响应时从不同步阻塞。

响应式宣言指出:

反应式系统依赖异步的消息传递,从而确保了松耦合、隔离、位置透明的组件之间有着明确边界。这一边界还提供了将失败作为消息委托出去的手段。使用显式的消息传递,可以通过在系统中塑造并监视消息流队列, 并在必要时应用回压, 从而实现负载管理、 弹性以及流量控制。使用位置透明的消息传递作为通信的手段, 使得跨集群或者在单个主机中使用相同的结构成分和语义来管理失败成为了可能。非阻塞的通信使得接收者可以只在活动时才消耗资源, 从而减少系统开销。

此外,HTTP/2 FAQ 很好地解释了在持久连接上采用多路复用的面向消息的协议的动机:

HTTP/1.x 有一个叫做 “head-of-line blocking(队头阻塞)” 的问题,在这种情况下,即在一个连接上一次只能有一个未完成请求。

HTTP/1.1 试图通过流水线(Pipelining)来解决这个问题,但它并没有完全解决这个问题(大的或慢的响应仍然会阻塞后面的其他响应)。此外,人们发现流水线很难部署,因为许多代理和服务器不能正确地处理它。

在HTTP/1中使用并发连接和域名分片来缓解HOL问题

并发连接,浏览器针对每个源(域名)可以打开4-8个TCP连接,提升并发度。

域名分片,浏览器和HTTP/1限制了并发连接的数量,那么就把多个域名指向一台服务器,从而提升连接数量。

这迫使客户端使用一些启发式方法(通常是猜测)来确定什么请求在什么时候放在与源站的哪个连接上;由于加载一个页面的次数通常是可用连接数量的10倍或者更多。这会导致被阻塞的请求“瀑布式”的增长,从而严重的影响性能。

多路复用通过允许多个请求和响应消息在一个连接上同时传输来解决这些问题;甚至可以将一条消息的部分与另一条消息的部分混合在一起。

使用HTTP/1,浏览器为每个源打开4-8个连接,由于许多站点使用多个源,这可能意味着打开单个页面要加载30多个TCP连接。

一个应用程序同时打开如此多的连接,打破了TCP所建立的许多假设;由于每个连接都会在响应中传输大量的数据,因此TCP缓冲区很大可能会溢出,从而导致拥塞事件和超时重传。

一个应用程序同时打开如此多的连接,此外,使用如此多的连接不公平地垄断了网络资源,“窃取”了其他性能更好的应用程序(如VoIP)的资源。

四、Interaction Models(交互模型)

不合适的协议会增加系统开发的成本。它可能是一个不匹配的抽象,但是我们必须将系统设计强加到他允许的交互模型中。这迫使开发人员花费额外的时间来解决它的缺点,以处理错误并获得可接受的性能。在多语言环境中,这个问题被放大了,因为不同的语言将使用不同的方法来解决这个问题,这需要团队之间的额外协调。到目前为止,通信协议事实上的标准是HTTP,它只支持请求/响应的交互模式。在某些情况下,这可能不是最理想通信模型。

一个例子是推送通知。使用request/respones交互模型,客户端必须使用轮训不断检查服务端的状态。应用程序每秒执行大量的请求,只是为了轮询,然后被告知没有适合它们的东西。这对于客户端、服务器、网络来说是巨大的浪费。花费金钱;并增加了基础设施的规模、运营的复杂性,从而提高了可用性。它还通常会增加用户接收通知时的延迟,因为轮询会缩减到更长的间隔以试图降低成本。

出于这个和其他原因,RSocket不仅仅局限于一个交互模型。下面描述的各种支持的交互模型为系统设计提供了强大的新可能性:

4.1 Fire-and-Forget(即发即弃)

即发即弃是请求/响应的优化,在不需要响应时很有用。它允许显着的性能优化,不仅仅是通过跳过响应来节省网络使用,而且还可以减少客户端和服务器的处理时间,因为客户端不需要记录和等待请求关联的响应和取消请求。

此交互模型对于支持有损的用例非常有用,例如非关键事件日志记录。

可以这样使用:

FuturecompletionSignalOfSend=socketClient.fireAndForget(message);

4.2 Request/Response (single-response)(请求/响应(单响应))

仍然支持标准请求/响应语义,并且仍有望代表 RSocket 连接上的大多数请求。这些请求/响应交互可以被认为是优化的“只有 1 个响应的流”,并且是在单个连接上多路复用的异步消息。

消费者“等待”响应消息,所以它看起来像一个典型的请求/响应,但它从不同步阻塞。

可以这样使用:

Futureresponse=socketClient.requestResponse(requestPayload);

4.3 Request/Stream (multi-response, finite)(请求/流(多响应,有限))

从request/response延伸出来的是request/stream,它允许多条消息流回。将此视为“集合”或“列表”响应,但不是将所有数据作为单个响应返回,而是按顺序流回每个元素。

用例可能包括以下内容:

获取视频列表

在目录中获取产品

逐行检索文件

可以这样使用:

Publisherresponse=socketClient.requestStream(requestPayload);

4.4 Channel(通道)

通道是双向的,在两个方向上都有消息流。

受益于此交互模型的示例用例是:

客户端请求一个数据流,该数据流最初会破坏当前的世界视图

当发生变化时,增量/差异从服务器发送到客户端

客户端随时间更新订阅以添加/删除标准/主题/等。

如果没有双向通道,客户端将不得不取消初始请求,重新请求并从头开始接收所有数据,而不是仅仅更新订阅并有效地获取差异。

可以这样使用:

Publisheroutput=socketClient.requestChannel(Publisherinput);

五、协议形式

连接上传输的数据是流(Stream)

流(Stream)由帧(Frame)组成

帧(Frame)包含了元数据(MetaData)与业务数据(Data)

基于 RSocket 协议,我们的业务数据会被打包成帧,并以帧流的形式在客户端与服务端互相传输。所以 RSocket 的所有特性都是基于这个帧流实现的。协议详情可以参考:https://rsocket.io/about/protocol

RSocket是一个二进制协议,也就是说在一个RSocket连接上传输的消息体对数据格式没有任何要求,应用程序可以为所欲为的压缩数据量的大小。

这样的二进制协议通常来说能给性能带来极大的提升,但是产生的代价是,网络中间件也会因为无法解读消息体中的数据,丧失了在对具体应用流量进行监控,日志和路由的能力。RSocket通过把每个消息体分成data和metadata的方式,在保证高效传输的前提下,提供了暴露少量元数据给网络中间件的能力。

对于每个data和metadata,应用可以采用不同的序列化方法。

data一般作为应用本身需要传递的业务数据,采取自定义的高效序列化方式,且对网络基础设施不可见。

metadata可以采用网络基础设施一致默认的格式。在分布式传输的过程中,这些中间件可以按需求对metadata进行读写,然后监控应用健康状况或者调整路由。

六、RSocket与其它协议有什么区别?6.1 对比Http1.x

Http1.x只支持request/response,但是现实应用中并不是所有请求都需要有回应(Fire And Forget)、有的需求需要一个请求返回一个数据流(request/stream)、有的还需要双向数据传输(channel)。

6.2 对比Http2.x

http2.x不支持应用层流量控制、伪双向传输,即服务端push数据本质上还是对客户端请求的响应,而不是直接推送。RSocket做到了真正的双向传输,使得服务端可以调用客户端服务,使得服务端和客户端在角色上完全对等,即两边同时是Requester和Responder。

6.3 对比grpc

grpc需要依赖protobuf,本质上还是http2.x。RSocket不限制编解码,可以是xml、json、protobuf等。

性能上grpc要差一些:详见压测对比,https://dzone.com/articles/rsocket-vs-grpc-benchmark

6.4 对比TCP

一个应用层的协议、一个传输层的协议,其实两者不在一个层面,为啥要作比较呢,因为netty让tcp层的编程也很容易,但是需要自定义传输协议,比如定义header、body长度等等,用起来还是很麻烦的。

6.5 对比WebSockets

websocket不支持应用层流量控制,本质上也是一端请求另一端响应,不支持连接修复。

七、RSocket适用于哪些场景?

移动设备与服务器的连接

数据双向传输,且支持流量控制。支持背压,背压的意思:如果客户端请求服务端过快,那么服务端会堆积请求,最终耗光资源。有了背压机制,服务端可以根据自己的资源来控制客户端的请求速度,即调用客户端告诉它别发那么快。

支持连接修复,比如手机进地铁之后,网络断开一段时间,其他协议需要重新建立连接,RSocket则可以修复连接继续传输帧数据。

微服务场景

spring cloud目前支持的http协议,不能fire and forget、不能请求流数据、不能单连接双向调用;替换成RSocket之后可以满足以上需求的同时提高性能。且针对服务治理、负载均衡等RSocket都在慢慢完善。

由于微服务和移动设备的普及,RSocket火起来应该就是这几年的事儿,让我们拭目以待吧。


欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。

标签: 流量控制 应用程序 多路复用

上一篇 : 120Stories

下一篇 : 最后一页

最新推荐

百科 关于珍惜时间的成语有哪些

一刻千金、时不我待、白驹过隙、惜时如金、分秒必争、百代过客、寸阴是惜、华不再扬、尺璧非宝、急景流...

学习 什么是妇人道

妇人道有以下两种含义:1、指妇人说。妇人是汉语名词,指古时的女人,根据《汉书》第三十九卷的记录,在...

知识 泾渭分明发生在哪里的奇观

最佳答案泾渭分明发生在陕西西安的奇特景观,位于高陵区城南5公里泾渭河汇流之处。渭河是黄河最大的支流...

学习 南街村在河南什么地方

最佳答案南街村在河南新乡市红旗区。南街村区位优势明显,西距京珠高速公路、S308、107国道、石武高铁1...

知识 怎么强行进去别人的QQ空间

有两种方法:法1、用Q讯进在百度搜Q讯空间法2、这是间接的方法,打开soso搜索博客选择博客为QQ空间,搜...

百科 生活用水咋处理

去离子法,去离子法的目的是将溶解于水中的无机离子排除,与硬水软化器一样,也是利用离子交换树脂的原...

学习 駹怎么读

最佳答案máng,駹,汉语生僻字,基本含义为:1、青色的马。2、杂色的牲口。3、古部族名。駹的常...

知识 嘌呤是什么东西

嘌呤是身体内存在的一种物质,主要以嘌呤核苷酸的形式存在,在作为能量供应、代谢调节及组成辅酶等方面...

知识 7寸照片尺寸

17 78厘米乘以12 7厘米。7英寸照片的尺寸是17 8厘米乘以12 7厘米。照片的尺寸是以英寸为单位,1英寸...

律师兼任调解员 不打官司解纠纷

律师兼任调解员,不打官司也能化解纠纷,代理调解受指派的公益性案件还免费。这是兵团第十师北屯市探索...

青海2022年上半年英语四级报名时间:3月15日至3月18日

根据教育部教育考试院统一安排,2022年上半年全国大学英语四、六级口语考试将于5月21日-22日举行,笔试...

人生第一桶金、与学业冲突……学生代购的“苦”与“乐”

  学生代购的“苦”与“乐”  “你问的这个产品现在做促销活动,买一件包邮,还送小样和面膜……”...

辽宁大连发布10日新增21例本土确诊病例行程轨迹

  11月11日大连市新冠肺炎疫情防控总指挥部发布,11月10日0时至24时,大连市新增21例本土新冠肺炎确诊...

纤维素制成闪光材料无毒可降解 或彻底改变化妆品行业

  纤维素制成闪光材料无毒可降解  或彻底改变化妆品行业  科技日报北京11月11日电 (实习记者张...

新冠疫情期间 海洋中或堆积2.8万吨相关塑料废物

  海洋中或堆积了2 8万吨新冠废物  科技日报北京11月11日电 (记者刘霞)据美国趣味科学网站10日报...

开屏广告又现新花招,换个马甲就重来?

  开屏广告又现新花招,换个马甲就重来?  ■ 来论  据媒体报道,“双十一”期间,一些App的开屏...

对不合理教师资格认定标准,该全面清理了

  对不合理教师资格认定标准,该全面清理了  ■ 来论  针对网友留言反映的“糖尿病无法通过教师...

虚假宣传、以次充好 直播间商家“放水”让消费者闹心

  虚假宣传、以次充好、售卖临期产品不提示直播间商家“放水”让消费者闹心  关注“双11”  今年...

“扫码抽手机”实则是广告 快递单广告是谁发的?

  “扫码抽手机”实则是广告  快递单能“领红包”面单广告是谁发的?  “双11”之际,消费者被商...

北京市本起疫情部分确诊病例病毒全基因组测序已完成

  中新网11月12日电 据北京市疾病预防控制中心微信公众号消息,2021年11月10日北京市接报1例在京存在...

辽宁大连本轮疫情病毒为德尔塔变异株 24个区域划定为中风险地区

  (抗击新冠肺炎)辽宁大连本轮疫情病毒为德尔塔变异株 24个区域划定为中风险地区  中新社大连11月1...

西安市鄠邑区太平峪首次发现野生川金丝猴踪迹

  中新网西安11月11日电 (梅镱泷 杨起超)记者11日从西安市鄠邑区秦保局获悉,太平国有生态林场架设...

成都停业整顿56家零售药店 买感冒药需提供身份证

  (抗击新冠肺炎)成都停业整顿56家零售药店 买感冒药需提供身份证  中新网成都11月11日电 (记者 ...

大连市启动第二轮全员核酸检测

  中新网大连11月11日电 (记者 杨毅) 11月11日,大连市政府秘书长衣庆焘在大连疫情防控新闻发布会...

浙江衢州发现的西周墓葬群或为“姑蔑王陵”

  新华社杭州11月11日电(记者冯源)在商周时期,如今的浙江中西部活跃着一个名为“姑蔑”的族群,但是...

大连本轮疫情为德尔塔变异株

  中新网大连11月11日电 (记者 杨毅)11月11日,大连市政府秘书长衣庆焘在大连疫情防控工作新闻发布...

大连:本轮疫情病毒载量高、传染性强 代际传播为2天左右

  中新网大连11月11日电 (记者 杨毅)11月11日,大连市政府秘书长衣庆焘在大连疫情防控工作新闻发布...

25名干警获云南“最美政法干警”表彰

  中新网昆明11月11日电(记者 缪超)云南“最美政法干警”发布仪式11日在昆明举行。会上,授予昆明市...

甘肃凝聚“她力量”:互助抗疫,女人更懂女人心

  (抗击新冠肺炎)甘肃凝聚“她力量”:互助抗疫,女人更懂女人心  中新网兰州11月11日电 (记者 徐...

甘肃戈壁的“明星劳模”:自编自导让每一个工人唱“主角”

  中新网兰州11月11日电 (史静静)在甘肃金川公司,27年来葛小海始终在生产一线,他参与的“渣罐车制...

跨越千山万水 浙江爱心“温暖”新疆沙雅孩子

  中新网乌鲁木齐11月11日电 (王小军 罗宣政 廖超)11月11日,一批来自浙江嘉兴的爱心物资,跨越...

“钢轨神探”启5大铁路大动脉9300公里冬季“诊疗”

  中新网兰州11月11日电 (邬凡 朱学成)11月10日5时30分,位于敦煌车站旁的敦煌综合工区,钢轨探伤车...

重庆把接种点“搬”进小学,8岁学生:“我不怕疼,打疫苗是为抵抗病毒”

  中新网重庆11月11日电 (梁钦卿)“我今年上小学三年级了,我不怕疼,打疫苗是为了抵抗新冠病毒。”1...

四川绵阳:一男子酒后报警谎称自己是“黄码”被行拘10天

  中新网绵阳11月11日电 (岳波 李远梅)四川绵阳警方11日通报称,一男子酒后无聊多次报警称自己的...

民航局对多个入境航班发出熔断指令

  中新网11月11日电 据中国民航局网站消息,11月11日,民航局再发熔断指令,对德国汉莎航空公司LH728...

疫情中轮椅上的“逆行者”:想为大家做力所能及的事

  中新网成都11月11日电 题:疫情中轮椅上的“逆行者”:想为大家做力所能及的事  作者 祝欢  ...

上海警方:“三无产品”借短视频平台引流诈骗近千名受害人

  中新网上海11月11日电 (记者 李姝徵)上海警方11日召开发布会披露,在近期“砺剑”行动中破获了一...

山西搭建交通事故重伤员无差别急救绿色通道 累计救助7727个受困家庭

  中新网太原11月11日电 (记者 李庭耀)记者11日从山西省政府新闻办举行的新闻发布会上获悉,山西推...

三万余尾“水中大熊猫”放流新疆博斯腾湖(图)

  中新网乌鲁木齐11月11日电 (刘雨珊 牛雨萌 艾尼)11日,记者从新疆水产科研所获悉,新疆博湖县将...

大连新增11个中风险地区

  中新网大连11月11日电 (记者 杨毅)大连市新冠肺炎疫情防控总指挥部 11日发布公告,大连市将庄河...

陕西科技大学开设“酿酒课” 培养学生知行合一

  中新网西安11月11日电 (记者 党田野)身穿白色“礼服”,摇晃着酒杯,时不时浅酌一口啤酒,然后与...

辽宁大连:今日新增十一个中风险地区

  11月11日大连市新冠肺炎疫情防控总指挥部发布,按照国务院应对新冠肺炎疫情联防联控机制关于科学划...

“双十一”南京的猪都“脱单”了?其实还有更让人嫉妒的……

  中新网南京11月11日电 题:这个“双十一”南京的猪都“脱单”了 其实还有更让人嫉妒的……  ...

内蒙古警方悬赏20万缉凶扎兰屯重大刑事案嫌疑人

  中新网呼伦贝尔11月11日电 (记者 张林虎)11日,记者从内蒙古自治区呼伦贝尔市公安局获悉,该局将...

“帅府主题系列甜品”发布:孙中山喜食“牛奶煮苹果” 宋庆龄爱吃蛋糕

  中新网广州11月11日电 (记者 程景伟)“寻味帅府邂逅甜蜜——2021年帅府之夜”暨“海外拾珠——孙...

江苏徐州“家门口车管所”便民服务驶入“高速路”

  中新网徐州11月11日电 题:江苏徐州“家门口车管所”便民服务驶入“高速路”  作者 朱志庚 ...

重庆市发出今年秋冬季首次空气污染应对工作预警

  中新网重庆11月11日电 (梁钦卿)为加强秋冬季空气污染应对,重庆市生态环境局11日发出2021年第九次...

全国道德模范|深藏功名三十载 化作春蚕报乡亲——一名抗美援朝老兵的人生选择

  新华社重庆11月11日电 题:深藏功名三十载 化作春蚕报乡亲——一名抗美援朝老兵的人生选择  新...

湖南桃江“花痴”男子盗窃六盆盆栽落法网

  中新网益阳11月11日电 (王鹏 王庆庆)爱花本是修身养性、陶冶情操之事,湖南益阳市桃江县桃花江镇...

成都25位民辅警的“封闭”生活:有人“转行”送外卖 有人变身“仓鼠管理员”

  中新网成都11月11日电 题:成都25位民辅警的“封闭”生活:有人“转行”送外卖 有人变身“仓鼠管...

X 广告
X 广告

精彩放送

2022年江苏中小学:体育教师师生比将达1:220

国内首次!成都发布公园城市银杏观叶指数

江苏学生体质健康监测报告:“小眼镜”“小胖墩”问题突出

被拐17年 湖北宜昌警方助男子与家人团圆

福建柘荣发现1例境外输入复阳病例 四名密接者核酸检测为阴性

内蒙古额济纳旗达来呼布镇调整为低风险地区

内蒙古现有本土确诊病例32例 伊金霍洛旗确诊病例清零

交通陆续恢复 内蒙古通辽生产生活秩序逐步恢复正常

选矿工技师的创新路:从废旧场“寻宝”到多技术攻关

海外传播官体验宁波“十里红妆” 赞其“让人震撼”

山西中小学幼儿园基本实现“4个100%”达标建设

走近张家界“奇峰守护者”

新华全媒+丨黑龙江黑河:他们在寒冬中战“疫”

山东日照第一批五莲县外解除隔离人员返家 将继续进行7天居家健康监测

中央气象台:未来几天我国大部天气将趋稳 东北雨雪进入尾声

云南西双版纳:巾帼护村队化身边境村寨守护者

乘客自发合力推车 “119”为“120”抢出一条急救通道

中老联合考古队探索青铜冶炼遗址奥秘 结下“深厚情谊”

黑龙江:抢修人员彻夜冒雪“破冰” 高铁列车逐步恢复运行

内蒙古通辽:交通陆续恢复 生产生活秩序逐步恢复正常

中国石油在京系统全面进入应急状态

记者手记:采访他们10分钟,我的手都快冻僵了

云南瑞丽畹町镇国防街片区调整为中风险地区

女儿与父母失散18年 黔滇两地警方携手让爱“团圆”

北京朝阳新增2名确诊病例 152名密接均已管控

听冬奥制服设计师贺阳讲述“水墨长城”灵感从何而来

纸短情长:一封道歉信“温暖”一座小城

能订货还给免费代购 便民菜车如何办成“五年老店”

买的床收货变清洁膏 小心收钱不发货的“跑路”电商

北京:在京单位加强会议活动管理 提倡视频开会

调查显示甘肃民众对战疫有信心

手机APP自动续费这个“坑”该咋填?专家支招

奔跑在无声世界的“李慢跑”:不走捷径才是最快的捷径

北京海淀1地升为中风险 确诊病例轨迹涉地铁、小学

“疫”下城市的邻里生活,不再是“相顾无言”

未售出“空置房”需交物业费吗?法院判决开发商应按合同支付

甘肃妇联发挥“联”字优势 近20万女性化身抗疫志愿者

双十一快件“爆仓”来袭 投递服务成“投诉大户”

辽宁:雪灾致640.50万头(只)畜禽死亡

中国青少年抑郁检出率超2成 学生健康体检要筛查!

清华贫困生“树洞里”装着励志之外的三重价值

我国境内首宗个人破产清算案裁定

夫妻档盗版黑手伸向《扫黑风暴》 警方:莫把盗版视商机

深圳“医保药价通”上线 医保药品价格一键可查

29岁父亲“割肝救女” 8月龄“小黄人”重获新生

452支团队参加第二届海峡两岸(福州)职工创新创业创造大赛

守护孤残儿童25年 她为2000多个孩子撑起一片天

“双十一”来临 快递强市浙江金华加强“人物并防”

江苏实施全生命周期监管将危废源头“一网打尽”

不拘一格降人才 摘下有色眼镜看“第一学历”

Copyright ©  2015-2022 亚洲律师网版权所有  备案号:豫ICP备20022870号-9   联系邮箱:553 138 779@qq.com