为啥需要RPC,而不是简单的HTTP? prc是什么意思

一、七层网络构造模型:我们先来懂得一下OSI的七层网络构造模型(虽然实际运用中根本上都是五层),它可以分为以下几层:(从上到下)第一层:运用层 。定义了用于在网络中进行通讯和传输数据的接口;第二层:表现层 。定义不同的体系中数据的传输格局,编码和解码规范等;第三层:会话层 。管理用户的会话,掌握用户间逻辑
一、七层网络构造模型:
我们先来懂得一下OSI的七层网络构造模型(虽然实际运用中根本上都是五层),它可以分为以下几层:(从上到下)

  • 第一层:运用层 。定义了用于在网络中进行通讯和传输数据的接口;
  • 第二层:表现层 。定义不同的体系中数据的传输格局,编码和解码规范等;
  • 第三层:会话层 。管理用户的会话,掌握用户间逻辑衔接的树立和中止;
  • 第四层:传输层 。管理着网络中的端到端的数据传输;
  • 第五层:网络层 。定义网络装备间如何传输数据;
  • 第六层:链路层 。将上面的网络层的数资源网据包封装成数据帧,便于物理层传输;
  • 第七层:物理层 。这一层重要就是传输这些二进制数据 。
实际运用进程中,五层协定构造里面是没有表现层和会话层的 。应当说它们和运用层合并了 。我们应当将重点放在运用层和传输层这两个层面 。因为HTTP是运用层协定,而TCP是传输层协定 。好,知道了网络的分层模型以后我们可以更好地懂得为什么RPC服务相比HTTP服务要Nice一些!
二、HTTP 服务:
其实在很久以前,我对于企业开发的模式一直定性为HTTP接口开发,也就是资源网我们常说的RESTful作风的服务接口 。的确,对于在接口不多、体系与体系交互较少的情形下,解决信息孤岛初期常应用的一种通讯手腕;长处就是简略、直接、开发便利 。应用现成的http协定进行传输 。我们记得之前实习在公司做后台开发的时候,重要就是进行接口的开发,还要写一大份接口文档,严厉地标明输入输出是什么?说清晰每一个接口的要求办法,以及要求参数须要注意的事项等 。比如下面这个例子:
POST http://www.test.com/restful/user/info
接口可能返回一个JSON字符串或者是XML文档 。然后客户端再去处置这个返回的信息,从而可以比拟迅速地进行开发 。但是对于大型企业来说,内部子体系较多、接口非常多的情形下,RPC框架的利益就显示出来资源网了,首先就是长链接,不必每次通讯都要像http一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰硕的监控管理;宣布、下线接口、动态扩大等,对调用方来说是无感知、统一化的操作 。
三、RPC 架构:
一个完全的RPC架构里面包括了四个核心的组件,分离是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以懂得为存根 。分离说说这几个组件:
  • 客户端(Client),服务的调用方 。
  • 服务端(Server),真正的服务供给者 。
  • 【为啥需要RPC,而不是简单的HTTP? prc是什么意思】客户端存根,寄存服务端的地址资讯,再将客户端的要求参数打包成网络资讯,然后通过网络远程发送给服务方 。
  • 服务端存根,吸收客户端发送过来的资讯,将资讯解包,并调用本地的办法 。

为啥需要RPC,而不是简单的HTTP? prc是什么意思

文章插图


四、 什么时候须要PRC:
先来看一下,没有RPC的时候,会怎么样:
为啥需要RPC,而不是简单的HTTP? prc是什么意思

文章插图


在过去是这样的,包含现在很多对企业服务可能也是这样,只有一个包安排在web服务器里 。
那个时候,没什么须要用到RPC的场景 。
然后当用户量大的时候呢?渐渐涌现了负载均衡 。大概是这个样子:
为啥需要RPC,而不是简单的HTTP? prc是什么意思

文章插图


负载均衡能解决的问题很多,但是还是不够好,比如说,只是某一个功效模块(假设是用户中心)被拜访的次数特殊频繁,我可不可以把这部分内容单独拿出去?用户中心的机器独立,给它单独的带宽,给他单独的服务器,给他单独的数据库?
不这么干其他的功效模块都干不下去了啊 。
以学校餐厅举例:
学校餐厅,可以容纳500人同时就餐,但是有一家面馆,生意特殊好,每到饭点来吃饭的人都有2000人,占满了餐桌,排队好几百米,餐厅的其他摊位确定不乐意了吧?


推荐阅读