rpc机制和实现过程

Posted zgoi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rpc机制和实现过程相关的知识,希望对你有一定的参考价值。

1.RPC机制

简介:rpc(remote procedure call)是远程过程调用的方式之一,涉及调用方和被调用方,类似于本地方法的调用方式。一般采用客户端/服务端(C/S)模式。基于底层协议二进制流。

rpc的调用过程:

1.客户端进程以正常的方式调用客户端存根(client stub)。

2.客户端存根生成一个消息,然后调用本地操作系统的网络通信模块,存根进入阻塞状态。

3.客户端操作系统将网络消息传递给服务端操作系统。

4.服务端操作系统将网络消息传递给服务端存根(server stub)。

5.服务端存根将参数提取出来,然后调用本地的服务端程序。

6.服务端程序执行相应的操作,操作完成后将结果返回给服务端存根。

7.服务端存根把结果打包成消息,然后调用本地操作系统。

8.服务端操作系统将含有结果的消息发送给客户端操作系统。

9.客户端操作系统把消息交给客户端存根,存根从阻塞状态恢复,进入运行状态。

10.客户端存根将结果从消息中提取出来,返回给客户端进程。

2.传递参数

通过RPC方式进行远程调用,首先要处理的就是参数传递问题。将参数从调用方传递给被调用方进程。

参数传递分为两种传递方式:值参数和引用参数。

1.值参数传递: 将参数的值复制到网络消息的数据中即可。

2.引用参数传递: 发送参数的副本,将他们放置在远程计算机中的内存中,向他们传递指向服务器内存的指针,然后将对象发送给客户端,复制他的引用。

数据格式:异构系统中需要制定一个统一的数据格式进行编解码。

隐式类型:只传递值。

显式类型:传递字段类型和值。

3.通信协议的制定

通信协议一般分为公有协议(http,smpp,webservice)和私有协议(grpc的protocol buffer,facebook的 thrift, 阿里巴巴的bolt)。

整个协议栈由5部分组成: 编码器,解码器,心跳,命令协议和命令处理器。

通信模式分为4种: oneway,sync(同步模式), futrue, call。

1.oneway: 不关心响应,请求线程不会被阻塞。

2.sync:调用会阻塞请求线程,待响应返回后才进行下一次请求。

3.futrue: 调用过程中不会被阻塞,获取结果的过程会阻塞线程。

4.call: 真正的异步调用,不会阻塞线程,结果处理是在异步线程里执行。

以上是关于rpc机制和实现过程的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop RPC机制

Hadoop RPC机制

PYNQ中RPC机制是如何实现的

3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo

Dubbo的底层实现原理和机制

理解Android系统的进程间通信原理----RPC机制