有了HTTP,为什么还要RPC?

      最后更新:2022-06-26 04:36:42 手机定位技术交流文章

      长期以来,没有办法真正理解RPC(远程程序调用)和HTTP调用之间的区别。难道这不是写一个服务并在客户端上调用它吗?

      本文简要介绍了C/S架构的两种形式,首先提到它们最内在的区别是,RPC主要基于TCP/IP协议,HTTP服务主要基于HTTP协议。

      我们都知道HTTP协议高于TCP,因此在效率方面,RPC肯定更好!让我们更具体地谈谈RPC服务和HTTP服务。

      OSI网络七层模型

      在谈论RPC和HTTP之间的区别之前,我认为有必要理解OSI的七层网络结构模型(尽管实际上它基本上是五层)。

      它可以分为以下层:从上层到下层

      • 第一个层:应用程序层,定义了用于网络中通信和传输数据的接口。
      • 第二层:代表层。 定义不同系统的数据传输格式、编码和解码规范。
      • 第三阶段:对话阶段:管理用户会议,控制用户之间的逻辑连接的建立和中断。
      • 第四层:传输层管理网络中的端到端数据传输。
      • 级5: 网络层. 定义数据如何在网络设备之间传输.
      • 第六层:链层。上述网络层数据包被封入数据框架,用于物理层传输。
      • 第七层:物理层,主要用于传输这些二进制数据。

      在实际应用过程中,五级协议结构中没有表示层和对话层,应该说它们与应用层合并。

      由于HTTP是一个应用层协议,TCP是一个传输层协议。

      知道网络的层次模型,我们就能更好地理解为什么RPC服务比HTTP服务更好!

      RPC 服务

      RPC服务从三个方面分别引入:

      • RPC 架构
      • 同步异步调用
      • 流行的RPC框架

      RPC 架构

      让我们从RPC服务的基本架构开始,我们可以清楚地看到一个完整的RPC架构包含四个核心组件。

      分别是:

      • Client
      • Server
      • Client Stub
      • 服务器堆栈(这个堆栈可以理解为一个存储库)

      下列 组成 部分 分别 讨论 :

      • 客户,服务的呼叫者。
      • 服务器, 真正的服务提供者.
      • 客户端根存储服务器的地址消息,将客户端请求参数包入网络消息中,并通过网络远程发送给服务器。
      • 服务端根接收客户端发送的消息,解封消息,并调用本地方法。

      RPC主要用于大型企业,因为大型企业系统复杂,业务领域复杂,效率优势非常重要,这次RPC的优势更加明显。

      例如,我们有处理订单的系统服务,首先声明所有它的接口(这是Java中的接口),然后把整个项目包装成瓶子,服务方面引入了这个二进制库,然后执行相应的函数,在客户端方面,只需要引入这个二进制库来调用。

      为什么这样做呢?主要是为了减少在客户侧的瓶子包装的大小,因为太多的瓶子包装总是会影响每个包装的效率。

      同步调用与异步调用

      同步调用是什么?非同步调用是什么?同步调用是一个等待调用并返回结果的客户端。

      非同步调用意味着客户端不会等待调用完成返回,但仍可通过返回函数等接收返回通知。 如果客户端不关心结果,它可以成为单向调用。

      这个过程与Java中的可调和可运行接口有些相似,当我们逐步执行这项任务时,如果要知道执行的结果,您可以使用可调接口,也可以通过未来类获取非同步执行结果的信息。

      如果您不关心执行结果,就直接使用可运行接口,因为它不会返回结果。当然,可调用也是可能的,我们不需要获取未来。

      流行的RPC框架

      目前流行的开放源代码RPC框架仍然相当大,下面的三个类型被突出:

      1gRPC是一个基于最新HTTP2.0协议的开放源代码软件,它支持许多通用的编程语言。

      我们知道HTTP2.0是基于二进制的HTTP协议的升级版本,目前所有浏览器都支持它。

      该RPC框架是基于HTTP协议实现的,由底部的Nety框架提供支持。

      2Thrift是Facebook的一个开放源代码项目,主要是一个跨语言服务开发框架,它有一个代码生成器,它自动生成它定义的IDL定义文件的服务代码框架。

      用户必须先进行二次开发,而底部的RPC通信是透明的。 然而,这个特性,要求用户学习一个特定的语言领域,仍然是昂贵的。

      3Dubbo是一个由Ali Group开发的非常著名的RPC框架,广泛应用于许多互联网公司和企业应用中。

      同样的远程接口基于Java接口,并依靠Spring框架进行简单的开发。它可以方便地包入一个单一文件,独立的进程运行,并符合当前的微服务概念。

      HTTP 服务

      事实上,很久以前,我定义了企业开发模型为HTTP接口开发,我们经常称之为RESTful风格的服务接口。

      事实上,在很少的接口和很少的系统相互作用的情况下,这是在信息孤岛早期普遍使用的通信方法;它的优点是简单、直接和易于发展。

      使用现有的HTTP协议发送.我们记得我们在公司做后端开发时的研究生实习,主要开发接口,我还要写一个大的界面文档,严格指定的输入输出是什么?明确说明每个接口的请求方法,以及您需要在请求参数时注意的事情。

      比如下面这个例子:

      接口可以返回JSON字符串或XML文档,然后客户端再处理返回信息,以便更快速地开发。

      但对于大型企业来说,因为有许多内部子系统和许多接口,RPC框架的优点是显而易见的,首先是,长链路,不需要每次三手握手来进行HTTP通信,并且降低了网络成本。

      其次,RPC框架一般有注册中心,具有丰富的监控管理;发布、下线接口、动态扩展等是用户无法理解和统一的操作。

      总结

      RPC服务与HTTP服务之间仍存在许多差异;一般来说,RPC服务主要针对大型企业,而HTTP服务主要针对小型企业,因为RPC更高效,HTTP服务开发迭代更快。

      简言之,框架的选择不是取决于市场流行的东西,而是通过对整个项目进行彻底的评价,从而仔细比较两个开发框架对整个项目的影响,最后决定什么是最适合该项目。

      没有必要为每个项目使用RPC,而是根据情况进行分析。

      作者:浮生忆梦出处: https://tinyurl.com/y4o875zm

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/28509.html

          热门文章

          文章分类