0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RSocket的定义及四种通讯模式

jf_78858299 来源:脚本之家 作者:Andy Shi 2023-02-13 14:44 次阅读

RSocket的定义

RSocket 是Reactive Socket的意思,也就是反应式编程网络协议。

它的官方 文档 的标语是:

Application protocol providing Reactive Streams semantics

这里有几层意思:

  • 首先RSocket确保的是网络通讯的语义是符合反应流的规范。
  • 第二它是应用层的协议,所以它并不介意传输层的协议。

接着,文档中给出了它的具体定义:

RSocket is a binary protocol for use on byte stream transports such as TCP, WebSockets, and Aeron.

这里强调的是RSocket协议是二进制的编码,与文本编码有很大的不同。

2 设计的思想

随着微服务的发展,传统的反应式编程的实现也受到挑战,特别在网络传输的部分,需要把背压作端到端的传输,而不是在一跳以后就丢失了。

另一方面,反应式编程的本身就要求反应式编程是消息驱动的。

这两个方向的方向的合力,就是把反应式编程从CPU和内存延伸到网络,这就是RSocket。这里的网络,是指应用层的,RSocket 努力的方向是让应用的语义可以在网络上传播。而对于传输层,RSocket 的原则是尽量兼容。目前它支持的传输层有WebSockets, TCP, 或者 Aeron。

3 RSocket 的四种通讯模式**

RSocket 先定义了一套规范,然后才有实现。这套规范定义了数据帧的格式。此外,RSocket 总结了分布式应用的通讯共同特点,定义了四种不同的反应流通讯方式。

  • request/response (stream of 1):就是传统的RPC
  • request/stream (finite stream of many):是指单向的流
  • fire-and-forget (no response):是指无返回值的RPC
  • channel (bi-directional streams):是指双向的流

4 与反应式编程的关系**

反应式编程的两个主要方面(非官方解释),就是非阻塞线程管理和背压。RSocket 主要是实现背压的网络部分。有的语言,如Java, 有好几个反应式编程的库,如RxJava, Reactor等。这种情况下,RSocket 就是和这些已有的库整合,不会重新发明轮子。但是,如果有的语言没有这样的库,那么RSocket 就要自己实现这部分的功能。

一个完整的RSocket SDK, 是包括非阻塞线程管理+背压+网络的,应该把它当作是反应式编程的扩展,而不是一个单独的模块。没有了其他的部分,RSocket 是根本没有用的。

5 与gRPC的比较**

gRPC 也分两部分(非官方版本):protobuf 和 HTTP/2。与HTTP2的比较下一节讲。Protobuf 要解决的问题,是多语言定义服务的问题。这个和RSocket 要解决的问题不是一个方向的。所以,RSocket 可以支持protobuf 的IDL。在负载编码的问题上,RSocket 很中立,它支持protobuf,Json, 或者是Java interface。

6 与HTTP/2的比较

HTTP/2 是1.1的增强版,但它还是HTTP。这个协议有几个比较大的问题:

  1. 它是为 web 通讯开发的, 它的主要特点是通信的单向性。对一个链接来说,一定有一个 client, 一个server。而RSocket 是针对应用间的通讯而设计的,通讯像对话一样,是双向的,是流式的。所谓client和server的关系也是比较模糊的。HTTP/2著名的server push是为浏览器开发的。对应用而言,要么是用websocket, 要么是用SSE,即ascii编码。
  2. HTTP/2所支持的语义是基于HTTP 方法,GET, PUT, DELETE,等。这些对于应用来说是不够的。而额外操作的定义就要在应用中自行完成。
  3. HTTP/2的流控是在字节的层级上,而不是应用的层级(帧)。这样的转化也会增加应用的负担。

7 RSocket 自身的特点

我们暂时忘掉反应式编程。不管叫什么名字,它最终要为应用带来好处。我们就RSocket 为应用带来的好处做个介绍:

  1. 面向链接。这个特点以后我们会展开讲。简单说就是链接的状态会被保存下来。当然,与kafka等不同,这个状态不落盘。但是只要有一边不重启,链接状态是可以恢复的。
  2. 双向传输。就是复用同一个链接,双方没有主次之分。一旦链接建立,双方都可以用背压方式要求数据传输。
  3. 端到端的流控。这条以后也会展开说。简单地说,HTTP/2 的流控是一站一站,就是说假设A-B-C,A-B的流控对B-C是无效的。而用了RSocket,A-C的流控是应用程序可控的。比如A说给我8条记录,(这就是背压的实现),C就会知道并传8条记录到A。

这些特点,会让RSocket 在应用间的通讯表现比起HTTP/2有很大的提升。

本文作者:Andy Shi,阿里巴巴高级技术专家,Andy长期关注Service Mesh,在Cloud Foundry,Kubernetes,Envoy,RSocket上有着丰富的实践和开发经验。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10824

    浏览量

    211087
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1348

    浏览量

    78978
  • 网络通讯
    +关注

    关注

    0

    文章

    74

    浏览量

    11247
收藏 人收藏

    评论

    相关推荐

    DDS AD9910的四种工作调制模式是什么意思

    DDS AD9910的四种工作调制模式是什么意思?说是有单频模式数字斜坡模式RAM模式 和并行模式
    发表于 07-16 19:37

    74hc259的四种模式

    74hc259的datasheet中有四种工作模式,具体是怎么个情况看不大明白,求助大家。下图为其真值表,
    发表于 07-15 13:00

    STM32芯片GPIO的四种输入模式四种输出模式

    STM32芯片的GPIO一共有8配置模式,对8模式的理解如下1.四种输入模式上拉输入:在默认
    发表于 05-21 07:55

    单片机四种输入模式

    单片机四种输入模式 MCU输入模式有浮空、上拉、下拉、模拟输入这四种模式,如果采用上拉或者下拉模式
    发表于 08-24 16:19

    变频器主要支持四种模式

    变频器主要支持四种模式:无PG的V/F模式,有PG的V/F模式,无PG的矢量控制模式,有PG的矢量模式
    发表于 09-03 06:57

    SPI的四种时序

    声明:本篇文章面向在已对SPI的四种时序有所了解的人我们采用SPI3模式以及将FPGA作从机,STM32作主机的方式讲解,在STM32控制部分采用的是半双工模式,但其实半双工与全双工区别不大,稍加
    发表于 02-09 06:18

    二维码的四种主要应用模式

    本文介绍二维码主要的四种应用模式,包括读取数据模式、解码上网模式、解码验证模式、解码通信模式
    发表于 01-25 11:52 3404次阅读

    云计算的三服务模式四种部署模型

    云计算基于3特殊的云计算服务模式,具体架构包括:基础设施即服务、软件即服务、平台即服务。四种部署模型:公有云、私有云、社区云、混合云。
    发表于 01-31 15:10 3079次阅读

    WIFI模块四种工作模式介绍_WIFI模块工作模式浅析

    WIFI模块常见的四种工作模式:透传模式、串口指令模式、HTTPD Client模式、GPIO模式
    发表于 01-19 14:45 2.8w次阅读

    Windows 10进入安全模式四种方法

    在Windows 10上,可以使用命令提示符、设置、启动电源菜单和MSConfig等四种不同的方式以安全模式启动电脑。通过安全模式,可以加载足够的一组基本功能和通用电脑驱动程序,以解决和解决常见的软件和硬件相关问题。
    的头像 发表于 12-21 16:03 5001次阅读

    实验3:CubeMx+Proteus+STM32 IO口模拟SPI协议的四种模式

    实验3:CubeMx+Proteus+STM32 IO口模拟SPI协议的四种模式
    发表于 11-29 14:36 17次下载
    实验3:CubeMx+Proteus+STM32  IO口模拟SPI协议的<b class='flag-5'>四种</b><b class='flag-5'>模式</b>

    IEC 61851标准中的四种EV充电模式

    在本文中,我们将了解国际电工委员会 (IEC) 规定的不同 EV 充电模式。这些模式在处理电动汽车传导充电系统的 IEC 61851 标准中指定。该标准描述了四种不同的充电模式,称为
    的头像 发表于 06-24 15:06 9727次阅读
    IEC 61851标准中的<b class='flag-5'>四种</b>EV充电<b class='flag-5'>模式</b>

    GPIO的四种输入模式介绍

    32位寄存器共同控制。 输出和输入都是针对芯片引脚来讲的(即引脚的对外输出,和外界对引脚的输入)。 四种输入模式介绍 输入模式下可读取端口的高低电平或电压。例如各类传感器(使用ADC功能),如果要将获取的电平传送给单片机的某一个
    的头像 发表于 11-09 16:51 6250次阅读
    GPIO的<b class='flag-5'>四种</b>输入<b class='flag-5'>模式</b>介绍

    浅析电子负载常见的的四种工作模式

    浅析电子负载常见的的四种工作模式 电子负载是电子设备的一,用于模拟负载并测试电源的性能。它在电子行业和电力领域有广泛的应用。电子负载常见的四种工作
    的头像 发表于 01-22 13:43 2241次阅读

    介绍MCUboot支持的四种升级模式(2)

    介绍MCUboot支持的四种升级模式,分别是Overwrite、Swap、Direct XIP和加载到RAM中执行。由于FSP不支持第四种——加载到RAM中执行,因为我们重点介绍前三
    的头像 发表于 06-13 10:56 765次阅读
    介绍MCUboot支持的<b class='flag-5'>四种</b>升级<b class='flag-5'>模式</b>(2)