RSocket是一种二进制的点对点通讯协议,是一种新的网络通讯第七层协议。旨在用于分布式应用程序中。从这个意义上讲,RSocket是HTTP等其余协议的替代方案。它是一种基于Reactive Streams规范具备异步,背压的双向,多路复用,断线重连,基于消息等特性。它由Facebook,Netifi和Pivotal等工程师开发,提供Java,JavaScript,C ++和Kotlin等实现。java
说到这里就有一些疑问了,为何要搞这个协议?难道程序员吃饱了撑得搞点新东西折腾本身?上面提到了Reactive Streams规范。若是你对这个规范不熟悉就须要经过 https://felord.cn 补补课了。这是java领域新的响应式规范,Reactor 3 、RxJava 都是该规范的实现。webflux、hystrix 总据说过吧。java 9 也吸取了该规范的一些精华。也就是说咱们如今能够实现网络通讯上的响应式了。响应式一个重要的特性就是背压(backpressure)。http通讯中服务端接收到过多的请求很容易会过载,严重时致使宕机。而经过背压处理能够选择性的响应请求来避免这种状况。还有http协议是无状态的,只要有请求不论是有效的仍是无效的,是不是重复的,服务器都会进行处理直到完成。若是使用响应式必定程度会大大减小这些无心义的请求。有时候咱们须要创建起长链接。就须要借助于Websocket来实现。若是使用RSocket就很容易创建链接双方的管道。还有其它很是多的场景这里再也不一一列举。程序员
其实上面也说明了一些RSocket的特性。这里简单总结一下:web
RSocket定义了四种交互模型来弥补Http协议的不足之处:服务器
Channel: 该模型模型提供双向通讯。在此模型中,消息流在两个方向上异步流动。例如发生更改时,从服务器向客户端发出增量/差别网络
随着响应式愈来愈被说起,RSocket在网络通讯的前途是不可限量的。有众多诸如Facebook、Pivotal等一线大厂的背书。Spring framework最近的几回更新都特别对其进行了支持。知名rpc框架Dubbo从3开始也针对RSocket进行了适配。目前RSocket还处于候选版本,尚未正式版。相对资料较少。并且须要对Reactive Streams 规范熟悉。相对来讲目前学习曲线仍是比较陡峭的。不过咱们能够从中借鉴一些解决问题的思路。框架
关注公众号:Felordcn 获取更多资讯
异步