RPC基本原理及框架
- RPC基本原理及框架
RPC非常重要,很多人面试的时候都挂在了这个地方!你要是还不懂RPC是什么?他的基本原理是什么?你一定要把下边的内容记起来!好好研究一下!特别是文中给出的一张关于RPC的基本流程图,重点中的重点,Dubbo RPC的基本执行流程就是他,RPC框架的基本原理也是他,别说我没告诉你!看了下边的内容你要掌握的内容如下,当然还有很多:
RPC的由来,是怎样一步步演进出来的;
RPC的基本架构是什么;
RPC的基本实现原理,就是下边的这张图,重点中的重点;;
为什么要有RPC
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。
1、单一应用架构
当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM) 是关键。
2、垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的 Web框架(MVC) 是关键。
3、分布式服务架构
当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。
此时,用于提高业务复用及整合的分布式服务框架(RPC),提供统一的服务是关键。
例如:各个团队的服务提供方就不要各自实现一套序列化、反序列化、网络框架、连接池、收发线程、超时处理、状态机等“业务之外”的重复技术劳动,造成整体的低效。
流动计算架构
PS:这个于扩展内容,摘自Dubbo官网,属于架构演进的一个过程
当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。
4、另外一个原因
就是因为在几个进程内(应用分布在不同的机器上),无法共用内存空间,或者在一台机器内通过本地调用无法完成相关的需求,比如不同的系统之间的通讯,甚至不同组织之间的通讯。此外由于机器的横向扩展,需要在多台机器组成的集群上部署应用等等。
所以,统一RPC框架来解决提供统一的服务。
二、什么是RPC
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。简言之,RPC使得程序能够像访问本地系统资源一样,去访问远端系统资源。比较关键的一些方面包括:通讯协议、序列化、资源(接口)描述、服务框架、性能、语言支持等。
简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
三、PRC架构组件
一个基本的RPC架构里面应该至少包含以下4个组件:
1、客户端(Client):
服务调用方(服务消费者)
2、客户端存根(Client Stub):
存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端
3、服务端存根(Server Stub):
接收客户端发送过来的请求消息并进行解包,然后再调用本地服务进行处理
4、服务端(Server):
服务的真正提供者
具体调用过程:
1、 服务消费者(client客户端)通过调用本地服务的方式调用需要消费的服务;
2、 客户端存根(client stub)接收到调用请求后负责将方法、入参等信息序列化(组装)成能够进行网络传输的消息体;
3、 客户端存根(client stub)找到远程的服务地址,并且将消息通过网络发送给服务端;
4、 服务端存根(server stub)收到消息后进行解码(反序列化操作);
5、 服务端存根(server stub)根据解码结果调用本地的服务进行相关处理;
6、 本地服务执行具体业务逻辑并将处理结果返回给服务端存根(server stub);
7、 服务端存根(server stub)将返回结果重新打包成消息(序列化)并通过网络发送至消费方;
8、 客户端存根(client stub)接收到消息,并进行解码(反序列化);
9、 服务消费方得到最终结果;
而RPC框架的实现目标则是将上面的第2-10步完好地封装起来,也就是把调用、编码/解码的过程给封装起来,让用户感觉上像调用本地服务一样的调用远程服务。
- 点赞
- 收藏
- 关注作者
评论(0)