RPC简介

     RPC(Remote Process Call Protocol),远程过程调用协议,是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。

     RPC采用客户机/服务器模式,请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息。最后,客户端调用进程接收答复信息,获得进程结果。客户端和服务器之间建立TCP连接,远程过程调用所有交换的数据都在这个连接里传输。连接可以是短连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。

     以下是一个RPC调用的通信流程图:


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~8步封装起来。

常见的RPC框架:

1、Thrift,Facebook开源并被Apache孵化。是一个跨语言的框架,客户端代码和服务端代码可以用不通的语言编写。

2、Dubbo。

3、gRPC。谷歌开源,在某手内部广泛使用。

4、tRPC。腾讯自研,在腾讯内部广泛使用。

posted on 2017-05-24 14:26  koushr  阅读(521)  评论(0编辑  收藏  举报

导航