HTTP协议的挑战者:RSocket

Posted 程序猿DD

tags:

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

点击蓝色“程序猿DD”关注我

回复“资源”获取独家整理的学习资料!

HTTP协议的挑战者:RSocket

1. 简介

RSocket是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,RSocket是HTTP等其他协议的替代方案。它是一种基于Reactive Streams规范具有异步,背压的双向,多路复用,断线重连,基于消息等特性。它由Facebook,Netifi和Pivotal等工程师开发,提供Java,javascript,C ++和Kotlin等实现。

2. 背景

说到这里就有一些疑问了,为什么要搞这个协议?难道程序员吃饱了撑得搞点新东西折腾自己?上面提到了Reactive Streams规范。如果你对这个规范不熟悉就需要通过 https://felord.cn 补补课了。这是java领域新的响应式规范,Reactor 3 、RxJava 都是该规范的实现。webflux、hystrix 总听说过吧。java 9 也吸收了该规范的一些精华。也就是说我们现在可以实现网络通信上的响应式了。响应式一个重要的特性就是背压(backpressure)。http通信中服务端接收到过多的请求很容易会过载,严重时导致宕机。而通过背压处理可以选择性的响应请求来避免这种情况。还有http协议是无状态的,只要有请求不管是有效的还是无效的,是否是重复的,服务器都会进行处理直到完成。如果使用响应式一定程度会大大减少这些无意义的请求。有时候我们需要建立起长连接。就需要借助于Websocket来实现。如果使用RSocket就很容易建立连接双方的管道。还有其它非常多的场景这里不再一一列举。

3. 特性

其实上面也说明了一些RSocket的特性。这里简单总结一下:

  • 具有语言无关性的二进制通信协议

  • 异步非阻塞消息驱动通信,高性能

  • 实现了网络通信的背压处理,在此基础上进行流量控制、连接恢复

  • 天然支持双向通信

  • 更加适合分布式通信场景

4. RSocket四种交互模型

RSocket定义了四种交互模型来弥补Http协议的不足之处:

  • Fire-and-Forget:优化请求/响应,在不需要响应时非常有用,例如非关键事件日志记录。

  • Request/Response:类似Http的请求/响应模型 但是具有Http没有的优点,它是异步和多路复用的。

  • Request/Stream:单个请求可以接收多个响应。例如获取视频列表、获取目录中的产品

  • Channel: 该模型模型提供双向通信。在此模型中,消息流在两个方向上异步流动。例如发生更改时,从服务器向客户端发出增量/差异

5. 前景

随着响应式越来越被提及,RSocket在网络通信的前途是不可限量的。有众多诸如Facebook、Pivotal等一线大厂的背书。Spring framework最近的几次更新都特别对其进行了支持。知名rpc框架Dubbo从3开始也针对RSocket进行了适配。目前RSocket还处于候选版本,还没有正式版。相对资料较少。而且需要对Reactive Streams 规范熟悉。相对来说目前学习曲线还是比较陡峭的。不过我们或许可以从中借鉴一些解决问题的思路。

本文通过OpenWrite的免费Markdown转换工具发布

-END-


留言交流不过瘾

关注我,回复“加群加入各种主题讨论群


HTTP协议的挑战者:RSocket





朕已阅 

以上是关于HTTP协议的挑战者:RSocket的主要内容,如果未能解决你的问题,请参考以下文章

Web页面逐年增长, TCP协议面临挑战

基于QUIC 协议的HTTP/3

什么是HTTP协议响应流

腾讯云海外音视频技术架构 — 挑战和优化

挑战华为社招:java运行时数据区和java内存模型

带你挑战年薪20W的广域网协议---BGP协议