美文网首页
Go RPC 开发指南之RPC介绍

Go RPC 开发指南之RPC介绍

作者: 大植先生 | 来源:发表于2018-02-03 17:01 被阅读0次

            远程过程调用(Remote Procedure Call,缩写为RPC)是一个计算机通信协议。该协议允许运行在一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。如果涉及的软件采用面向对象编程,那么远程过程调用亦可称作远程调用或远程方法调用,比如Java RMI。

            远程过程调用是一个分布式计算的客户端-服务器(Client/Server)的例子,它简单而又广受欢迎。远程过程调用总是由客户端对服务器发出一个执行若干过程请求,并用客户端提供的参数。执行结果将返回客户端。由于存在各式各样的变体和细节差异,对应地派生了各式远程过程调用协议,而且他们并不互相兼容。

            为了允许不同的客户端均能访问服务器,许多标准化的RPC系统应运而生了。其中大部分采用接口描述语言(Interface Description Language,IDL),方便夸平台的远程过程调用。

            从上图可以看出,RPC本身是client-server模型,也是一种request-response协议。

    有些实现扩展了远程调用的模型,实现了双向的服务调用,但是不管怎样,调用过程还是由一个客户端发起,服务器端提供响应,基本模型没有变化。

    服务的调用过程为:

            1.client调用client stub,这是一次本地过程调用

            2.client stub将参数打包成一个消息,然后发送这个消息。打包过程也叫做marshalling

            3.client所在的系统将消息发送给server

            4.server的系统将收到的包传给server stub

            5.server stub解包得到参数。解包也被称作unmarshalling

            6.最后server stub调用服务过程返回结果按照相反的步骤传给client

    相关文章

      网友评论

          本文标题:Go RPC 开发指南之RPC介绍

          本文链接:https://www.haomeiwen.com/subject/qcvuzxtx.html