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

相关推荐

  • 记工时员工怎么管理

    记工时员工管理要做到:一、合理分配工时;二、加强考勤管理;三、定期进行工时分析;四、加强沟通交流。合理的分配工时可以有效提高企业的生产效率,降低成本,使员工在工作中得到更好的发挥。 一、合理分配工时 合理的分配工时可以有效提高企业的生产效率,降低成本,使员工在工作中得到更好的发挥。企业管理人员在编制…

    2023年4月16日
    73100
  • 财务主管如何管理好项目

    财务主管在管理项目时,关键在于实现有效的财务规划、监控项目成本、优化资源分配和加强风险管理。这些要素是确保项目财务健康的基石,其中有效的财务规划尤为重要。它涉及到在项目启动前对经费的合理预算、资金的保障以及财务目标的设定。一个周密的财务计划,不仅提供了项目资金使用的蓝图,还能够预见和控制潜在的财务风…

    2024年4月10日
    5400
  • c语言中,main() ; int main(void) ; int main() ; void main() 有什么区别

    区别:main() 老式的写法,返回类型int在新型的编译器不可省略,否者会有警告。int main(void) 新式的写法,int main(void)表示不接受参数。int main() 新式的写法,int main()表示授受任何数量的参数。void main() 老式、不标准的写法。6.0及…

    2023年2月16日
    1.2K00
  • oa办公室自动化

    标题:OA办公室自动化系统的重要性和实施策略 摘要:在数字化时代,办公室自动化(OA)系统成为提高工作效率、促进信息流通、加强企业内部管理的关键。1、办公效能显著提升;2、信息共享与沟通渠道拓宽;3、管理流程优化。以上三点体现了OA系统的必要性。其中,办公效能显著提升涉及减少手工操作,通过电子文档流…

    2024年1月11日
    18300
  • 项目销售如何做好维护管理

    做好项目销售的维护管理,关键在于持续跟进、细致了解客户需求、高效的沟通技巧、及时更新产品信息以及建立客户关系管理系统(CRM)。在这些要素中,建立客户关系管理系统(CRM)尤为关键,因为它帮助企业系统化地管理客户信息,提高跟进效率,促进销售增长。CRM系统能够记录每一位客户的需求、偏好和交易历史,让…

    2024年4月10日
    5700
  • 监理如何管理项目经理岗位

    监理在项目管理中起着至关重要的作用,他们的主要任务是确保工程项目按照既定计划、预算和标准顺利进行。对于管理项目经理岗位,监理需要运用多种策略和技巧,包括设立明确的沟通渠道、进行定期的项目审查、坚持质量控制标准、实施风险管理计划、以及提供持续的培训与支持。其中,设立明确的沟通渠道是基础且关键的一步。有…

    2024年4月10日
    6300
  • 如何加强项目部安全管理

    加强项目部安全管理是至关重要的工作,不仅影响到工程质量、工期和成本,而且直接关系到每位工作人员的生命安全和身体健康。要有效加强项目部安全管理,需从制定详细的安全管理制度、定期进行安全教育和培训、建立健全的隐患排查和处理机制、加强现场安全监督、采用现代化的安全管理工具和技术等方面入手。其中,制定详细的…

    2024年4月10日
    5900
  • APP软件开发用哪些软件比较好

    APP软件开发所用软件有:1、PingCode;2、Git;3.Jenkins;4、Bamboo;5、华为云DevCloud。PingCode是国内国内的一款知名研发项目管理软件,曾在2021年,被知名媒体36氪评为:2021年国内研发项目管理榜单名列前茅的研发项目管理系统。 一、PingCode …

    2023年4月30日
    1.6K00
  • vscode为什么总是报错

    Visual Studio Code(VSCode)总是报错可能是因为插件冲突、配置文件不正确、软件本身的bug或者代码本身存在问题等多种原因。报错信息是反馈存在问题的信号,它帮助开发者定位并解决编程中的错误。详细描述其中一点,像插件冲突,某些扩展功能可能与VSCode的其他组件不兼容,或者两个插件…

    2024年4月3日
    22800
  • 如何管理项目部用车工作

    项目部用车工作的管理涉及到车辆申请流程的优化、日常维护和保养的组织、记账与审计的规范以及安全规范的执行等多个方面。核心目标是提升车辆使用效率、控制成本和保障行车安全。例如,在车辆申请流程优化方面,可以建立一个权限明确且响应迅速的审批体系,确保用车需求能够得到及时而有效的处理。 一、车辆申请流程优化 …

    2024年4月10日
    5400

发表回复

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

400-800-1024

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

分享本页
返回顶部