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机制和实现过程的主要内容,如果未能解决你的问题,请参考以下文章