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 规范熟悉。相对来说目前学习曲线还是比较陡峭的。不过我们获取可以从中借鉴一些解决问题的思路。

在此我向大家推荐一个架构学习交流圈。交流学习群:539413949(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

RSocket——Http协议的替代者相关推荐

  1. ipad协议最新替代

    ipad协议最新替代 登录:扫码登录,获取62数据,62登录,A16登录,自动心跳 好友管理:添加好友.删除好友.修改备注.创建标签.获取好友列表.一键检测僵尸粉,自动抢红包功能 消息管理:发文本消息 ...

  2. RSocket协议初识-Java中使用(二)

    前言 在RSocket协议初识(一)中我们使用SpringBoot创建了简单的RSocket通讯模型,本篇我们将介绍纯Java使用Demo.本文代码参照官网的rsocket-java/examples ...

  3. 中判断字符串是否为空_java中的数字以及如何判断字符串是不是数字

    01 前言 数字是计算机科学的根本,那么java中数字是怎样来表示呢?规则又是怎样呢?今天我们来探讨一下这个话题.数字在某些领域经常用字符串来进行表示和传递.那么我们可以从判断java中一个字符串是否 ...

  4. 一篇文章了解RSocket协议

    RSocket是一个类似于HTTP的通讯协议.在了解Rsocket协议之前,先简单介绍下HTTP协议. 之所以推出springboot的技术,一个原因是因为前后端设计的分离.因为基于HTTP协议可以直 ...

  5. 6 使用soap客户端_网络协议 20 - RPC 协议(上)- 基于XML的SOAP协议

    上一节我们了解 RPC 的经典模型和设计要点,并用最早期的 ONC RPC 为例子,详述了具体的实现.而时代在进步,ONC RPC 逐渐因为各种问题被替代,SOAP 协议就是替代者之一. ONC RP ...

  6. 计算机网络ipv4到ipv6怎么实现,论计算机网络协议IPV4到IPV6的过渡策略|房屋搬迁过渡协议...

    摘要:近年来IPV4协议的网络地址问题已经成为阻碍互联网发展的主要矛盾,而互联网的发展趋势将证明IPV4协议必将会被IPV6协议所替代,但其过渡的过程必定是艰难而漫长的.本文论述了IPV4协议存在的主 ...

  7. 浅谈RSocket与响应式编程

    简介: RSocket是高效一个二进制的网络通讯协议,能够满足很多场景下使用.另外,RSocket也是一个激进的响应式捍卫者,激进到连API都跟响应式无缝集成.本文我们将和大家分享RSocket与响应 ...

  8. 传输层端口号的范围是多少?被分为哪两部分_6.传输层协议

    前言 传输层定义了主机应用程序之间端到端的连通性.传输层中最为常见的两个协议分别是传输控制协议TCP ( Transmission Control Protocol )和用户数据包协议UDP ( Us ...

  9. 广域网技术-PPP协议

    广域网技术-PPP协议 前言 PPP协议 (一)使用PPP协议的目的 (二)PPP协议的优点 (三)PPP架构和报文格式 1.基本架构 2.报文格式 3.PPP基本原理 PPP的建链过程 4.LCP协 ...

最新文章

  1. 轻量级卷积神经网络的设计技巧
  2. Python设计模式-单例模式
  3. 【Python入门】你值得拥有的这八个实用工具安装包与实战项目
  4. C++实现树的建立,查找,遍历输出
  5. 洛谷P2219 [HAOI2007]修筑绿化带(单调队列)
  6. 据说很多女生都想知道男生是如何上厕所的?
  7. 抖音用计算机弹曲子,抖音计算机乐谱有哪些?抖音计算机乐谱大全分享
  8. 基于HTML5的WebGL结合Box2DJS物理应用 1
  9. 要兼容ie时注意事项
  10. 深入理解iPhone委托模式兼谈iPhone生命周期
  11. GTK 4.0 图形工具包正式发布
  12. linux 运行ctl文件_[命令] Linux 命令 systemctl(程序单元启动和管理)
  13. Android Stagefright MPEG4Extractor分析
  14. 面试:如何评价程序员
  15. 从OSPO 来思考开源治理问题
  16. VisualBasic程序设计第二章的学习与自测
  17. 探究“补阶乘大法的本质“——糖水不等式
  18. android视频动态壁纸app,短视频动态壁纸转换
  19. 面试时,如何回答你还有什么想要了解的?
  20. 2016年上市新SUV斯柯达kodiaq大气造型

热门文章

  1. 推荐几款2022年好用的设备管理系统(软件)
  2. MAC 如何多开微信
  3. 安川最小巧机器人_安川电机:全球首台小巧快GP系列机器人出货
  4. 设备管理器错误代码52
  5. matlab图像识别英文文献,matlab图像处理-外文翻译-外文文献-英文文献-基于视觉的矿井救援...
  6. RePlugin集成ARouter
  7. 鼠标放到图片上,图片慢慢变清淅
  8. office word由于宏安全,不能打开宏
  9. 证券行业数字化转型,联想超融合提供了一种新的路径
  10. 一年一度的科技狂欢盛会——2022亚马逊云科技re:Invent全球大会