响应式应用新协议RSocket

Posted 架构三道湾

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了响应式应用新协议RSocket相关的知识,希望对你有一定的参考价值。

RSocket是一种用于反应式应用程序的新的网络协议。

RSocket是在华盛顿特区举行的SpringOne平台会议上宣布的,是一种新的第7层语言无关的应用网络协议。它是一种基于Reactive Streams背压的双向,多路复用,基于消息的二进制协议。它由Facebook,Netifi和Pivotal等工程师开发,提供Java,javascript,C ++和Kotlin等实现。

该协议专门设计用于与Reactive风格应用配合使用,这些应用程序基本上是非阻塞的,并且通常(但不总是)与异步行为配对。使所谓Reactive背压: 即发布者无法向订户发送数据直到该订户已经准备就绪的想法,这是与“异步”的关键区别。

官方定义:RSocket 是基于 reactive stream flow control 的双向的、多路的、基于消息的、二进制通讯协议。它提供了 4 种交互模式:

  • request - response:一个请求,一个响应。现在的 Restful 服务既是如此;

  • fire-and-forget:对于那些不关心结果的请求,直接返回;

  • request – stream:一个请求,多次结果返回;

  • channel:服务器可以发多个请求给客户端,客户端也可以发多个结果给服务器;

几个特点:

  • 可取消:请求和响应都可取消,能够高效的清理系统资源;

  • 可中断后继续:如果被调用方卡住了,请求方可断开后,过一会再过来重试;

  • 可租赁:响应者可根据自己的实际情况来控制调用方的频率,其实就是响应式编程中的背压的实现;

支持语言:








Driver Transport(s) Version Core Support Resumption Leasing RPC
rsocket-java
  • aeron (UDP)

  • akka

  • reactor-netty 
    (TCP, websocket)

1.0 x

x
rsocket-js
  • nodejs net (TCP)

  • plain (websocket)

1.0 x x
x
rsocket-net
  • System.Net 
    (TCP, websocket)

1.0 x

x
rsocket-cpp
  • Folly (TCP)

1.0 x x

rsocket-go
  • Go NET (TCP)

1.0



rsocket-kotlin
  • reactor-netty 
    (TCP, websocket)

  • OkHttp 
    (websocket client only)

1.0 x


rsocket-py
  • asyncio (TCP)

1.0




以上是关于响应式应用新协议RSocket的主要内容,如果未能解决你的问题,请参考以下文章

NetfiFacebook阿里等公司共同力推“响应式编程”技术:Rsocket

浅谈 RSocket 与响应式编程

Dubbo3.0新特性集成RSocket,新增响应式支持

Dubbo 3.0 ? No ! RSocket 永远的神

用 RSocket 解决响应式服务之间的的通讯-Part 3:基于 RSocket 进行抽象

我对响应式编程中Mono和Flux的理解