跳到内容

新一代通信协议:RSocket

发布于:2020年3月27日
Cover

toc

什么是 RSocket

RSocket 是一种二进制协议,可以使用任何字节流传输方式,比如 TCP,UDP,WebSocket,Aeron

它的官方网站: https://rsocket.io/(链接可能访问不畅)。

它通过单一连接传输异步消息,支持以下几种交互模式:

它的底层协议符合 Reactive Streams 语义(链接可能访问不畅)。

从它叫 RSocket 这个名字,就能看出它的野心勃勃。这让我想起了当年 ZeroMQ 想成为 Linux 基础网络库呢。

我的一些理解

既然有了 Dubbo,gRPC,HTTP 2,Thrit,XXX… 为什么还需要 RSocket 呢?

拿我最熟悉的 gRPC 来对比,gRPC 也支持那四种交互模式,也是二进制协议,支持多语言,为啥 RSocket 更好呢?

我觉得最重要的,是 RSocket 基于 Reactive Streams 语义,并且是一种比较底层的协议

Reactive Streams 是比较标准化的东西,JDK 9 直接内置了支持。

上面列举的那些协议,都自带自己的传输方式,使用的范围自然比更底层的协议要窄。

而且,RSocket 得到了多个大厂的支持:

Broker 模式

Spring Cloud Gateway 支持 RSocket 的 Broker 模式。

简单说,这种模式是:

所有请求都通过转发,具体到一个调用,比直接连接要多耗时间。但是,当应用规模大了,复杂了,多花的时间就很值得了:

很好,你已经成功引起了我的注意!虽然有点新瓶装旧酒的意思,不过还挺期待这种模式赶快成熟呢。

参考资料

欢迎关注同名微信公众号,文章自动推送:

nomadic-blood