RSocket——Http协议的替代者

article/2025/8/18 2:17:16

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

关注微信公众号:码农小胖哥 获取更多干货


http://chatgpt.dhexx.cn/article/y4qleM3o.shtml

相关文章

java-语言学习-eclipse安装java汉化包

java的汉化: 1.打开链接:https://www.eclipse.org/babel/ 2.进入网页后,往下翻一点,看到一个download(下图红框所示),点开。 3.进入一个页面后,往下翻一点点,看到有几…

安装Eclipse的中文语言包

安装Eclipse的中文语言包 下载语言包 1、进入网址 http://www.eclipse.org/babel 2、对应版本下载中文语言包 3、替换Eclipse软件安装文件的features、plugins,再次启动加载 4、替换出现The Eclipse executable launcher was unable to locate its companion l…

Eclipse 官方简体中文语言包下载地址及安装方法

转自: http://www.cnblogs.com/yaotong/archive/2011/12/28/2305421.html 打开Eclipse Babel Project 主页: http://www.eclipse.org/babel/downloads.php 根据Eclipse的版本找到相应的插件地址,复制下来。 进入Eclipse,选择Help->Install New Softwa…

Eclipse-中文语言包

Eclipse-中文语言包 效果图 版本使用中文语言包 下载过程 点击如下 打开插件市场 填写链接 填写此链接地址https://download.eclipse.org/technology/babel/update-site/latest/到下图 简体中文选择 简体中文选择 选择允许协议 安装代码提示插件codota 是什么 打开插件市场 搜…

Eclipse汉化 中文语言包下载安装 Babel Language Pack

相关链接 Java & Eclipse & Maven 使用配置方法 Eclipse平台上新建Java项目使用Junit测试 如何在Eclipse平台使用git从GitHub上下载文件至本地及管理本地git项目 Eclipse汉化 中文语言包下载安装 Babel Language Pack 点击进入Eclipse Babel Project 下拉可见 选择与自…

eclipse中文语言包安装(别看网上那些乱七八糟的,我这个最简单)

一、安装好JDK和eclispe。(这个步骤不用多说了) 二、步骤 1、找语言包并下载:https://www.eclipse.org/babel/downloads.php 找到汉化文件下载备用。 2、把下载好的文件复制到 eclipse的dropins文件夹中。 3、启动eclispe,汉化…

Eclipse语言包在官网下载不了-解决方案

可能家里的网络不好,在官网语言包一直出现这个问题,网上找了很久没找到解决方案,应该是家里网络和对方服务器不对付。就发现有下面这个选项,选了nanjing的节点就解决了。

eclipse汉化-设置语言包

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 一、通过插件的方式进行eclipse的汉化 1、登陆Eclipse Babel Project Downloads | The Eclipse Foundationhttps://ww…

基于遥感影像的道路提取论文、开源代码和数据集汇总

文章目录 前言2017DeepRoadMapperTopology Loss 2018RoadTraceriterative-deep-learning 2019Leveraging Crowdsourced GPS Data for Road Extraction from Aerial ImageryRoadNetRoadTaggerGenerative Graph Transformerroad_connectivityNL-LinkNet: Toward Lighter but More…

遥感影像云检测-云检测数据集信息及下载

常用云检测数据集信息及下载 1.LandSat7云量评估数据集2.LandSat8-Biome生物群落云量评估数据集3.LandSat8-38Cloud数据集4.高分系列-GF1-WHU遥感影像云数据集5.Sentinel-2 Cloud Mask Catalogue5.1.数据介绍5.2.数据集目录编排5.3.统计数据5.4.错误和不确定性 6.CESBIO数据集(…

AI实战营第二期 第七节 《语义分割与MMSegmentation》——笔记8

文章目录 摘要主要特性 案例什么是语义分割应用:无人驾驶汽车应用:人像分割应用:智能遥感应用 : 医疗影像分析 三种分割的区别语义分割的基本思路按颜色分割逐像素份分类全卷积网络 Fully Convolutional Network 2015存在问题 基于多层级特征…

【毕业设计_课程设计】基于 U-Net 网络的遥感图像语义分割(源码+论文)

文章目录 0 项目说明1 研究目的2 研究方法3 研究结论4 论文目录5 项目工程 0 项目说明 **基于 U-Net 网络的遥感图像语义分割 ** 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 实验训练使用 Anaconda 版 Python 3.7 下的 TensorF…

EISeg——应用于语义分割的自动标注软件

1、基本介绍 EISeg(Efficient Interactive Segmentation)是以RITM及EdgeFlow算法为基础,基于飞桨开发的一个高效智能的交互式分割标注软件。涵盖了通用、人像、遥感、医疗等不同方向的高质量交互式分割模型,方便开发者快速实现语义及实例标签的标注&…

基于paddleSeg的自定义遥感数据语义分割——以DLRSD为例

转自AI Studio,原文链接:基于paddleSeg的自定义遥感数据语义分割——以DLRSD为例 - 飞桨AI Studio 基于paddleseg 2.1使用自定义数据集DLRSD,其他遥感数据集实现训练、测试、推理脚本版任务 数据格式准备 DLRSD数据集 基于UCMerced_LandUse数据集进行…

【计算机视觉】最全语义分割模型总结(从FCN到deeplabv3+)

文章目录 一、前言1.1 语义分割 二、FCN:CNN语义分割的开山之作2.1 结构2.2 特点 三、Deeplab_v13.1 前言3.2 特点 四、U-Net4.1 结构4.2 特点 五、Seg-Net5.1 结构5.2 特点 六、Deeplab_v26.1 结构6.2 特点6.3 Fcis6.3.1 特点 七、RefineNet7.1 结构7.2 特点 八、L…

语义分割网络系列2——Unet

目录 1 Unet网络介绍1.1 Unet论文1.2 简介1.3 6大特点 2 Unet网络3种不同的实现方式2.1 Unet网络的class实现(mIou)2.2 Unet网络的layer的实现(mIou)2.3 第3种实现方法(存在问题,验证集准确率一直不变&…

毕业设计 U-Net遥感图像语义分割(源码+论文)

文章目录 0 项目说明1 研究目的2 研究方法3 研究结论4 论文目录5 项目源码6 最后 0 项目说明 **基于 U-Net 网络的遥感图像语义分割 ** 提示:适合用于课程设计或毕业设计,工作量达标,源码开放 实验训练使用 Anaconda 版 Python 3.7 下的 T…

基于深度学习的遥感影像语义分割数据预处理

基于深度学习的遥感影像语义分割数据预处理 第一次处理数据,不熟练,仅供参考 数据预处理工具:Arcgis 第一步:下载遥感影像tif数据 根据实际需求选择感兴趣的遥感影像区域 数据来源:Google卫星影像 第二步&#xff1…

语义分割—遥感影像数据标签制作(ARCGIS)

目录 制作标签 转为tif格式 制作标签 1.新建文件夹链接 2.右键新建的文件夹,新建一个shp文件 3.要素类型选择面要素,并为shp文件命名 此处可以配置与依赖图层相同的坐标系,也可以在转为.tif的时候修改环境里的两个选项统一坐标系 4.右键文…

语义分割:遥感影像标签制作

1、打开一张遥感影像,或者航片 2.新建shp:在对应文件夹下,右键新建shpfile 选择面,添加坐标系与影像坐标系相同 3.开始编辑新建的shp 选择面,沿图像四周紧贴图像画矩形 4. 保存编辑内容后停止编辑否则无法添加字段&…