响应式应用新协议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 |
|
1.0 | x | x | ||
rsocket-js |
|
1.0 | x | x | x | |
rsocket-net |
|
1.0 | x | x | ||
rsocket-cpp |
|
1.0 | x | x | ||
rsocket-go |
|
1.0 | ||||
rsocket-kotlin |
|
1.0 | x | |||
rsocket-py |
|
1.0 |