HTTP协议的挑战者:RSocket

article/2025/8/17 23:54:56

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

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

640?

640?wx_fmt=jpeg

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-

留言交流不过瘾

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

640?wx_fmt=gif

640?wx_fmt=gif

朕已阅 640?


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

相关文章

使用 RSocket——服务端主动调用客户端方法

1. 编写客户端接收请求的逻辑 我们可以在初始化 Rsocket 实例的时候指定客户端可以被调用的方法,使用 acceptor() 指定可被调用的方法和方法使用的通信模型类型: 通信类型为 RequestResponse 时: .acceptor(SocketAcceptor.forRequestRespo…

RSocket 与 gRPC性能对比

几乎每次我向观众介绍RSocket时,都会有人问这个问题:“ RSocket与gRPC相比如何?” 今天我们要找出答案。 搭建平台 插座 RSocket在应用程序网络上实现反应式语义。它是一种网络协议,可端对端实施反压力和其他反应流概念。 gR…

浅谈RSocket与响应式编程

简介: RSocket是高效一个二进制的网络通讯协议,能够满足很多场景下使用。另外,RSocket也是一个激进的响应式捍卫者,激进到连API都跟响应式无缝集成。本文我们将和大家分享RSocket与响应式编程。 作者 | 素渡 来源 | 阿里技术公众号…

阿里雷卷:RSocket从入门到落地,RSocket让AJP换发青春

考虑很久,决定还是写一下这篇文章,主要是 AJP 技术太老,我只能说 Long long ago ,估计我在用这个技术的时候,很多同学小学还没有毕业。但是没有问题,这篇文章只是一个架构启发,不会浪费你时间让…

云原生实践之 RSocket 从入门到落地:Servlet vs RSocket

技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广。 本期开始,我们推出《RSocket 从入门到落地》系列文章,通过实例和对比来介绍RSocket。主要围绕RSocket如何实现Polyglot RPC、Service Regi…

RSocket 基于消息传递的反应式应用层网络协议

下面基于RSocket的一些主要特性分别做一下介绍,并和HTTP之类的常见协议进行比较: Multiplexed, Binary Protocol 多路复用的二进制协议Bidirectional Streaming 双向流Flow Control 流控制Socket Resumption 连接恢复Message passing 消息传递模型Trans…

RSocket 从入门到落地:两种微服务对比

✏️ Pic by Alibaba Tech on Facebook 技术实践的作用在于:除了用于构建业务,也是为了验证某项技术或框架是否值得大规模推广。 这是《RSocket 从入门到落地》系列文章的第三篇,来一起对比下开发微服务应用和微服务之间的网络通讯。该系列文…

开源的技术底座技术中台spring cloud Rsocket 微服务

一、项目背景 企业对新技术、用户体验、需求响应、交互协作提出了新的要求 1、应用新技术: 物联网、人工智能、大数据挖掘和分析、机器人、自动化等 2、重用核心能力: 使组织能够在其ERP核心解决方案的基础上进行构建,并为“下一步做什么”铺…

spring响应式编程13 RSocket:一种新的高性能网络通信协议

前面几讲我们讨论了如何使用 WebFlux 构建响应式 Web 服务的实现方案。WebFlux 和 WebMVC 一样,都是基于 HTTP 协议实现请求-响应式的交互方式。这种交互方案很简单,但不够灵活,也无法应对所有的响应式应用场景。那么,有没有在网络…

RSocket 学习(二):HTTP VS WebSocket VS RSocket

在比对 HTTP、WebSocket、RSocket 之前,我们先通过下面这张 OSI 七层模型的图快速梳理一下网络通信的面貌, 以便后续更好地理解它们。 osi model.png 一. HTTP 的特性 超文本传输协议(英语:HyperText Transfer Protocol&#xff0…

基于RSocket协议实现客户端与服务端通信

RSocket基础开发demo package com.pshdhx.rsocket;import io.rsocket.Payload; import io.rsocket.RSocket; import io.rsocket.util.DefaultPayload; import lombok.extern.slf4j.Slf4j; import org.reactivestreams.Publisher; import reactor.core.publisher.Flux; import …

响应式编程之网络新约:RSocket

响应式reactive是Java中高效应用的下一个前沿,但它目前主要有两个障碍:数据访问和网络。RSocket是一种新的第7层语言无关的应用网络协议(解决后者),它由Facebook,Netifi和Pivotal等工程师开发,提…

一篇文章了解RSocket协议

RSocket是一个类似于HTTP的通讯协议。在了解Rsocket协议之前,先简单介绍下HTTP协议。 之所以推出springboot的技术,一个原因是因为前后端设计的分离。因为基于HTTP协议可以直接返回REST数据内容。 REST是一个简单且容易使用的异构处理架构,R…

RSocket 学习(一):初探

girl.jpg 一. RSocket 介绍 RSocket 是一种二进制字节流传输协议,位于 OSI 七层模型中的5、6层,对应 TCP/IP 模型中的应用层。RSocket 并没有规定必须使用何种底层传输层协议,开发者可以使用不同的底层传输协议,包括 TCP、WebSock…

RSocket——Http协议的替代者

1. 简介 RSocket是一种二进制的点对点通信协议,是一种新的网络通信第七层协议。旨在用于分布式应用程序中。从这个意义上讲,RSocket是HTTP等其他协议的替代方案。它是一种基于Reactive Streams规范具有异步,背压的双向,多路复用&…

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 下拉可见 选择与自…