一、简介
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(即发即弃)即发即弃是请求/响应的优化,在不需要响应时很有用。它允许显着的性能优化,不仅仅是通过跳过响应来节省网络使用,而且还可以减少客户端和服务器的处理时间,因为客户端不需要记录和等待请求关联的响应和取消请求。
此交互模型对于支持有损的用例非常有用,例如非关键事件日志记录。
可以这样使用:
Future4.2 Request/Response (single-response)(请求/响应(单响应))completionSignalOfSend=socketClient.fireAndForget(message);
仍然支持标准请求/响应语义,并且仍有望代表 RSocket 连接上的大多数请求。这些请求/响应交互可以被认为是优化的“只有 1 个响应的流”,并且是在单个连接上多路复用的异步消息。
消费者“等待”响应消息,所以它看起来像一个典型的请求/响应,但它从不同步阻塞。
可以这样使用:
Future4.3 Request/Stream (multi-response, finite)(请求/流(多响应,有限))response=socketClient.requestResponse(requestPayload);
从request/response延伸出来的是request/stream,它允许多条消息流回。将此视为“集合”或“列表”响应,但不是将所有数据作为单个响应返回,而是按顺序流回每个元素。
用例可能包括以下内容:
获取视频列表
在目录中获取产品
逐行检索文件
可以这样使用:
Publisher4.4 Channel(通道)response=socketClient.requestStream(requestPayload);
通道是双向的,在两个方向上都有消息流。
受益于此交互模型的示例用例是:
客户端请求一个数据流,该数据流最初会破坏当前的世界视图
当发生变化时,增量/差异从服务器发送到客户端
客户端随时间更新订阅以添加/删除标准/主题/等。
如果没有双向通道,客户端将不得不取消初始请求,重新请求并从头开始接收所有数据,而不是仅仅更新订阅并有效地获取差异。
可以这样使用:
Publisher五、协议形式output=socketClient.requestChannel(Publisher input);
连接上传输的数据是流(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.xHttp1.x只支持request/response,但是现实应用中并不是所有请求都需要有回应(Fire And Forget)、有的需求需要一个请求返回一个数据流(request/stream)、有的还需要双向数据传输(channel)。
6.2 对比Http2.xhttp2.x不支持应用层流量控制、伪双向传输,即服务端push数据本质上还是对客户端请求的响应,而不是直接推送。RSocket做到了真正的双向传输,使得服务端可以调用客户端服务,使得服务端和客户端在角色上完全对等,即两边同时是Requester和Responder。
6.3 对比grpcgrpc需要依赖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 对比WebSocketswebsocket不支持应用层流量控制,本质上也是一端请求另一端响应,不支持连接修复。
七、RSocket适用于哪些场景?移动设备与服务器的连接
数据双向传输,且支持流量控制。支持背压,背压的意思:如果客户端请求服务端过快,那么服务端会堆积请求,最终耗光资源。有了背压机制,服务端可以根据自己的资源来控制客户端的请求速度,即调用客户端告诉它别发那么快。
支持连接修复,比如手机进地铁之后,网络断开一段时间,其他协议需要重新建立连接,RSocket则可以修复连接继续传输帧数据。
微服务场景
spring cloud目前支持的http协议,不能fire and forget、不能请求流数据、不能单连接双向调用;替换成RSocket之后可以满足以上需求的同时提高性能。且针对服务治理、负载均衡等RSocket都在慢慢完善。
由于微服务和移动设备的普及,RSocket火起来应该就是这几年的事儿,让我们拭目以待吧。
欢迎大家关注我的公众号【老周聊架构】,Java后端主流技术栈的原理、源码分析、架构以及各种互联网高并发、高性能、高可用的解决方案。
一、简介RSocket是一种二进制字节流传输协议,位于OSI模型中的5~6层,底层可以依赖TCP、WebSocket、Aero...
03-06 15:44:41
1、约翰·迪克森·卡尔(JohnDicksonCarr,1906年11月30日—1977年2月27日),男,美籍推理
03-06 15:01:18
春季游黄山,常见问题解答丨在黄山,与美好相约吧
03-06 13:00:14
1、应该没死吧前几天还在电视里看到他的报道。本文到此分享完毕,希望对大家有所帮助。
03-06 11:49:18
欢迎观看本篇文章,小升来为大家解答以上问题。上海鲜肉月饼的做法,上海鲜肉月饼如何做很多人还不知道...
03-06 11:09:38
成都市人民政府关于丰伟等5人职务任免的通知
03-06 09:56:20
琼海主要旅游景点:博鳌东方文化苑、万泉河漂流、万泉河、白石岭、官塘温泉、红色娘子军雕像、金牛岭、...
03-06 08:25:42
0-0!本泽马进球被吹,皇马遭遇联赛两连平,落后巴萨已达9分,连平,皇马,巴萨,足球竞赛,波兰足球,法国足...
03-06 05:59:19
1、奥林扎克,是变形金刚漫画作品中的角色,萨克巨人的儿子。2、萨克巨人在统一星云星后意图将部分权力...
03-06 05:15:01
夏弥来为大家解答以下的问题,生化武器,说一说生化武器的简介,现在让我们一起来看看吧!1、生化武器(...
03-06 00:43:40
1、HJI住宿酒店位于兰卡威,是家1星级酒店。2、距离巨鹰广场打车6分钟,车程约4 9公里。本文到此结束,...
03-05 21:10:46
今天小编肥嘟来为大家解答以上的问题。疏忽五笔怎么打字,疏忽相信很多小伙伴还不知道,现在让我们一起来...
03-05 20:05:57
1、本文出自《孟子,告子上》。2、鱼,我所欲也;熊掌,亦我所欲也。3、二者不可得兼,舍鱼而取熊掌者也...
03-05 18:17:26
1、鉴别翡翠的方法:翡翠翡翠(jadeite),也称翡翠玉、翠玉、硬玉、缅甸玉,是玉的一种。翡翠是在地质...
03-05 16:50:26
《旅行的意义》填词:陈绮贞谱曲:陈绮贞演唱:陈绮贞你看过了许多美景,你看过了许多美女你迷失在地图...
03-05 15:07:01
1、你好~可以通过扫描微信二维码来添加,在空间或微博上看到某一朋友的二维码名片后,可以手机登录微信...
03-05 11:38:24
1、小时候吃过的最好吃的冰激凌-北冰洋袋淋。2、粉色的冰激凌装入一个透明的袋子里。3、夏天每天就盼着...
03-05 09:57:05
1、巴厘岛在印度尼西亚。2、巴厘岛,印度尼西亚岛屿,位于爪哇岛东部,面积5620平方公里,岛上热带植被...
03-05 08:33:10
欢迎观看本篇文章,小升来为大家解答以上问题。腊月尾牙是什么意思,腊月尾牙的含义很多人还不知道,现...
03-05 00:14:27
生活中,大家一贯认为上火牙疼都会吃些止痛药或消炎药,牙齿松动了都会去医院拔牙,包括我也是这么认为...
03-04 17:49:19
1、《仙剑奇侠传三》主题曲是《生生世世爱》,《仙剑奇侠传三》是根据国产单机游戏《仙剑奇侠传三》改编...
03-04 15:59:29
汽车现在已经越来越普及,基本上都快实现每家每户都有汽车了,那么汽车这么多的情况之下,我们在用车的...
03-04 12:13:12
2023带量采购新任务:三个层面加速品类扩围,体外诊断试剂联盟集采明确 《通知》明确要求继续探索体...
03-04 11:14:21
(一)文化单独考试。获得国家一级运动员、运动健将、国际健将、武术武英级(或以上)称号之一的考生,文化...
03-04 07:44:08
1、《【按需印刷】-双排键电子琴演奏的入门与提高》是中国戏剧出版社出版的图书。2、作者是韩露。文章到...
03-02 17:59:22
贵州省黔西市谷里镇清明村150余亩羊肚菌陆续进入采收期,村民们忙着采收羊肚菌供应市场。去冬今春,黔西...
03-02 15:52:30
同花顺数据中心显示,中元股份3月1日获融资买入373 53万元,占当日买入金额的20 73%,当前融资余额2 ...
03-02 10:49:57
1、1、对象不同2、稽查是对于行政相对人,如税务稽查大队,一般负责偷税漏税,作出的是外部行政行为。监...
03-02 05:58:01
1、大意就是说,不必拘泥于师生之间的关系。2、每个人自由每个人的长处,所以说老师不必处处胜过弟子,...
03-02 05:11:59
爱奇艺CEO龚宇:限制投屏的决策有失误,《狂飙》的爆红是意外
03-02 00:12:57
当地时间3月1日,土耳其外长恰武什奥卢在其个人社交账号上发布消息称,他与俄罗斯外长拉夫罗夫在二十国...
03-01 21:05:54
安卓防火墙使用介绍:360手机卫士:360手机卫士可以帮助你远离短信来电骚扰,保护隐私和通信安全,显示...
03-01 20:16:48
据央视新闻客户端报导,今起新版国家医保药品目录落地实施,各地参保群众就医购药时将适用新版目录的药...
03-01 19:01:16
搜狐娱乐:大家都知道你在《云襄传》演的是个很飒的女侠,尝试过这样的角色会有什么样的收获?毛晓彤:...
03-01 17:07:12
1、刘盈20岁时被迫娶其姐鲁元公主不到7岁的女儿张焉为妻。2、她空谷幽兰,遗世独立她一生没有得过皇帝的...
03-01 14:55:02
1、印尼:电压:230V(单相),380V(三相);频率:50Hz2、我国的标准是相电压380伏,线电压220
03-01 14:44:54
解答:1、放松疗法。2、压力、紧张和焦虑是诱发失眠的常见因素。放松疗法可以缓解上述因素造成的不良影...
03-01 13:00:34
发挥“纬度”优势,首个全国商业发射场开工建设,海南省航天技术创新中心挂牌成立,将着眼国家战略、海...
03-01 10:46:22
1、dimine数字矿山软件系统是在中南大学古德生院士及王李管教授领导下、由中南大学数字矿山研究中心的矿...
03-01 09:29:55
东方电缆2月28日公告,上交所对公司控股股东宁波东方集团有限公司及实际控制人夏崇耀、袁黎雨予以通报批...
03-01 08:46:07
对于在东北农村长大的我,家里就像个动物园,爸妈养了鸡、鸭、鹅、狗、猪、驴、牛、鸽子、兔子 ...
03-01 05:51:44
安卓优化大师的前身百度手机卫士,经过数次升级,演变成了今天的百度手机卫士。百度手机卫士是一款常用...
03-01 04:04:27
2月28日,新潮能源发布公告称,2023年第二次临时股东大会13项议题全部获得通过。其中备受关注的是公司新...
03-01 00:56:49
1、屌来!我这专家还没说都他吗的什么答案啊!那是你的浏览器的问题需要调整下浏览器的设置就行了!大姐...
02-28 21:52:06
哇!“警察叔叔”真的来啦
02-28 19:03:30
中新社北京2月28日电北京时间2月28日,国际足联2022年度颁奖典礼在巴黎举行,阿根廷队队长梅西战胜姆巴...
02-28 16:58:49
资产配置“压舱石”怎么选?这份债基投资秘诀不得不看,鹏华,偏债,债基,压舱石,qdii,投资秘诀,债券型基金
02-28 15:12:19
1、1、执牛耳词目执牛耳发音zhíniúěr释义古代诸侯订立盟约,要割牛耳歃血,由主盟国的代表拿着盛牛耳
02-28 13:15:15
草长莺飞二月天,拂堤杨柳醉春烟。兔年春季在满目翠绿的花开时节徐徐走来,在温暖的春天里,摄影人迎来...
02-28 13:08:54
鞭牛士2月28日消息,据上海消保委消息,多年来,垃圾短信一直让消费者不堪其扰,其中106短信平台已经成...
02-28 11:02:10
一、简介RSocket是一种二进制字节流传输协议,位于OSI模型中的5~6层,底层可以依赖TCP、WebSocket、Aero...
2023-03-06
1、约翰·迪克森·卡尔(JohnDicksonCarr,1906年11月30日—1977年2月27日),男,美籍推理
2023-03-06
春季游黄山,常见问题解答丨在黄山,与美好相约吧
2023-03-06
1、应该没死吧前几天还在电视里看到他的报道。本文到此分享完毕,希望对大家有所帮助。
2023-03-06
欢迎观看本篇文章,小升来为大家解答以上问题。上海鲜肉月饼的做法,上海鲜肉月饼如何做很多人还不知道...
2023-03-06
日前从邢台市新闻办举办的南宫专场新闻发布会获悉,今年以来,南宫市坚持外引内育,大力开展招商引资,...
近日,从海带中制造环保纱线的材料创新者AlgiKnit宣布获得1300万美元(8735 6万元)的A轮融资,以通过加...
概念特点1、 定义:纤维是天然或人工合成的细丝状物质,纺织纤维则是指用来纺织布的纤维。2、 纺织纤...
中新网西宁11月21日电 题:青海水润高原:从“大动脉”到“毛细血管”的精准管理 作者 谈林明...
中新网西宁11月21日电 (记者 张添福)青海省卫生健康委员会21日消息,该省第3例本土确诊病例经过20...
Copyright © 2015-2022 起点纤维网版权所有 备案号:皖ICP备2022009963号-12 联系邮箱: 39 60 29 14 2@qq.com