RSocket和传统的Http有什么区别呢

RSocket和传统的Http的区别是:两者都是解决分布式系统下,点对点通信问题,都是应用层通信协议。HTTP是文本协议,RSocket是二进制协议。从编程模型上看,在HTTP是一种Request/Reponse方式。客户端决定请求时机和次数,服务端有变化不能通知客户端,需要客户端不停的轮询。

RSocket和传统的Http有什么区别呢-Worktile社区

简单说来,两者都是解决分布式系统下,点对点通信问题,都是应用层通信协议。HTTP是文本协议,RSocket是二进制协议。

从编程模型上看,在HTTP是一种Request/Reponse方式。客户端决定请求时机和次数,服务端有变化不能通知客户端,需要客户端不停的轮询。RSocket除了R/R方式之外,支持另外三种:Fire&Forget(发送后不管),Request/Stream(单项流),Channel(双向流)。客户端与服务端的地位是平等的,需要与反应式编程配合使用,关键词是 非阻塞线程管理 和 背压。

RSocket 是一个 OSL 七层模型中 5/6 层的协议,是 TCP/IP 之上的应用层协议。RSocket 可以使用不同的底层传输层,包括 TCP、WebSocket 和 Aeron。RSocket 使用二进制格式,保证了传输的高效,它是一种基于Reactive Streams背压的双向,多路复用,基于消息的二进制协议。

RSocket与HTTP的不同之处在于它定义了四种交互模型,基于消息意味着协议可以支持单个连接上的多路复用。此外,与TCP一样,它是真正的双向,因此一旦客户端启动与服务器的连接,连接中的双方就变得彼此等同 – 实质上,服务器可以从客户端请求数据。

传统的HTTP如果指的是HTTP/1.1,那么区别很大了。HTTP/1.1 连多路复用都不支持, 只有请求响应模式。等等等。如果指HTTP/2.0, 有区别但其实不算太大。

HTTP/2.0 虽然支持了链接复用,但仍然主要只支持request/response 模型。网上很多人说HTTP2支持stream,不对,HTTP2对用户来说没有stream这个概念。它只是通过multiplex实现高效的request/response。另外H2提供Server Push的功能,但是功能和应用场景很有限。相反RSocket 是一个真正的bi-directional。 当client 和server建立链接之后,就不存在谁请求谁的问题了。任何一方都可以是requester 或者responder。

不过需要说明,虽然HTTP/2.0 本身不支持bi-directional communication, 但是在此基础上加一些应用层的framing的话还是可以做到的。gRPC就是这么一个例子,在HTTP body 的基础上 做了gRPC 层的framing,最终还是达到了bi-directional 的作用。从这个角度来说,gRPC 和RSocket基本可以互相代替。Facebook内部使用的Thrift RPC之后也会主要以RSocket作为传输层协议,主要卖点之一就是可以支持streaming场景。

延伸阅读:

什么是http?

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。

HTTP是应用层协议,同其他应用层协议一样,是为了实现某一类具体应用的协议,并由某一运行在用户空间的应用程序来实现其功能。HTTP是一种协议规范,这种规范记录在文档上,为真正通过HTTP进行通信的HTTP的实现程序。

HTTP是基于B/S架构进行通信的,而HTTP的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器,例如Firefox、Internet Explorer、Google Chrome、Safari、Opera等,此外,客户端的命令行工具还有elink、curl等。Web服务是基于TCP的,因此为了能够随时响应客户端的请求,Web服务器需要监听在80/TCP端口。这样客户端浏览器和Web服务器之间就可以通过HTTP进行通信了。

文章标题:RSocket和传统的Http有什么区别呢,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37922

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月13日 上午2:35
下一篇 2023年2月13日 上午2:38

相关推荐

  • 如何管理跨部门项目工作

    管理跨部门项目工作是一个复杂而又至关重要的任务。成功的跨部门项目管理依赖于有效的沟通、周密的计划、灵活的决策能力、以及良好的团队协作。其中,有效的沟通无疑是最关键的因素。有效的沟通不仅指明确、及时地传达信息,更包括确保信息的准确理解以及快速解决因沟通不畅带来的问题。这要求项目管理者具有高超的沟通技巧…

    2024年4月10日
    7500
  • 项目里程碑工具怎么做

    项目里程碑可以用以下软件:一、Zoho Projects;二、Tita项目管理;三、Microsoft Project;四、Jira。Zoho Projects是一款带里程碑管理的项目管理软件。通过Zoho Projects 项目任务管理软件将简单项目和复杂项目分解为里程碑、任务列表、任务和子任务,…

    2023年4月27日
    60100
  • 物流管理系统的设计与实现

    物流管理系统应当考量效率提升、成本控制、物流信息透明、合作伙伴协同四大区域。其中效率提升涉及如何缩短物流环节中的时间延误;成本控制则关乎如何优化资源配置降低运营成本;物流信息透明是为了确保从供应链各端至最终用户之间信息流转的及时准确性;合作伙伴协同则突出了跨部门、跨企业合作的重要性。效率提升在系统中…

    2024年1月9日
    41400
  • devops什么职业

    DevOps:构建与运营的桥梁 DevOps职业涉及一系列策略与方法,旨在提高软件开发与运维的协同效率。核心职能包括:1、实现自动化的流程操作,以提升交付速度并降低错误率;2、加强开发与运维间的沟通与协作,促进持续的改进和快速响应市场变化。特别是自动化流程操作,它通过脚本管理、持续集成(CI)与持续…

    2024年3月26日
    8900
  • 新建的项目部如何管理好

    在成功管理新建项目部时,关键是确保有明确的目标、有效的沟通机制、专业的团队构建、周到的风险管理、严格的质量控制、高效的资源分配。在各方面建立系统的管理流程至关重要,其中,有效的沟通机制尤为关键,因为它能够保证信息的流动,让团队成员对项目的方向、要求和进展保持一致的认知,从而确保项目的顺畅推进。 一、…

    2024年4月10日
    5400
  • 如何进行项目风险管理

    项目风险管理是识别、分析、规划、追踪、控制、沟通和应对项目中可能出现的不确定性和风险以最大程度减少其可能带来的消极影响。项目风险管理的核心在于提前识别和分析风险, 通过提前规划,将潜在问题最小化。此外,对策略的持续跟踪和调整以及与相关方的有效沟通也是不可或缺的一部分。 一、识别风险 首先,项目团队必…

    2024年4月10日
    6500
  • Java 两个String构造方法的区别

    Java 两个String构造方法在本质上,没有什么不同。两者的调用逻辑最终都是通过CharsetDecoder类的 decode 方法来实现的。调用的顺序是 String -> StringCoding -> CharsetDecoder。charsetName 作为参数的构造方法里面…

    2023年2月13日
    43500
  • 什么是超级APP

    超级APP,是指那些拥有庞大的用户数,成为用户手机上的“装机必备”的基础应用。各大移动互联网企业提出超级APP概念,给出对超级APP的不同解释。移动互联网供应商给出的答案是:超级APP就应该超级个性化,甚至应该是个性化中的个性化。 一、什么是超级APP 超级APP,是指那些拥有庞大的用户数,成为用户…

    2023年5月10日
    38400
  • JavaScript中加号运算符的类型转换优先级是什么

    JavaScript中的加号运算符在不同类型的数据之间进行运算时,会发生类型转换。这个过程中,JavaScript会根据一定的优先级规则来确定转换的方式。本文将详细介绍JavaScript中加号运算符的类型转换优先级,希望对读者有所帮助。 1. 加号运算符的作用 加号运算符在JavaScript中有…

    2023年3月1日
    25500
  • 挂靠项目如何管理

    对于挂靠项目的管理,三个核心方面是关键:规范合同、细致监管、有效沟通。这些方面共同构成了管理挂靠项目的基础。其中,细致监管尤为重要,它涉及到对项目进度的跟踪、质量的把控及风险的预防,确保项目可以按计划顺利执行,同时也保护了双方的权益。 一、规范合同 在管理挂靠项目的初期,确立一份清晰、全面的合同是基…

    2024年4月10日
    5900

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部