web service系列三(关于RPC).md

来源:互联网 发布:自己的五年规划 知乎 编辑:程序博客网 时间:2024/06/06 02:51

Web Service系列文章将在此续写。这里我们介绍下Web Service主要实现方式之一:RPC。
这里写图片描述
RPC概述

远程过程调用RPC协议(Remote Procedure Call Protocol ,简称RPC),它是通过网络从远程主机上的程序透明地请求服务,而不需要关心底层的网络技协议。RPC协议是假定某些传输协议是存在的,如TCP或UDP,它们为通信程序之间传输数据。所以在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC的出现使得开发包括分布式应用程序在内的应用程序更加简单。
RPC为网络中不同主机间提供了一种高级的通信方法,允许同一网络下的主机类似于本地调用一样透明地调用另外一台主机上的远程过程。一般而言,我们在本地用Python写一个库文件,在本地另外一个Python代码里import这个库文件,这样运行新的Python程序时,就能调用库文件里的函数,但是这个只能局限于本地,就是主程序和库里的过程之间的运行关系只是局限于本地调用关系。然而一旦到了网络环境,传统的调用模式就不适用,一台主机是没法直接利用另外一台主机的计算资源和存储资源(如CPU、Store、Memory等资源),更无法在实体间直接共享代码。而通过RPC进行编程,就能够解决这些问题,间接利用跨主机的计算资源和存储资源,实现代码之间的共享,提高系统资源的利用率,将不同类型的计算操作分散的不同的机器上面(如计算密集型的函数运行在多处理器主机,IO密集型函数运行在SSD主机),从而达到资源的充分利用。

RPC原理
这里写图片描述
RPC的过程调用一般指方法或者函数调用的过程,此时这个方法的控制权和数据转移到另外一个方法,直到这个方法任务计算完成后将控制权和计算结果返回到原来的方法那里。一个传统的程序有若干方法,方法1指向方法3的箭头代表着方法1对方法3的一种调用。传统程序中,运行中的本地方法之间内存等是可以通过链接器而连接在一起,从而无阻碍地调用本地的其他方法。
远程过程调用(RPC)是指本地系统上的方法激活远程系统上的方法,广义上来讲,RPC可以发生在不同主机上(如互联网络下的主机1和主机2),也可以发生在同一主机不同系统下(如Python程序的方法1和PHP程序的方法2之间)。其中单机RPC和多主机RPC的主要区别在于,单机RPC的数据只走了本地的环路loop网络,而多主机RPC的数据是需要离开本机网卡与其他机器进行数据交互,所以二者只在网络层及以下有区别,总体上还是一致的。

0 0
原创粉丝点击