(转)RPC原理详解
转自:http://www.open-open.com/lib/view/open1425797146897.html
RPC功能目标
RPC的主要功能目标是让构建分布式计算(应用)更加容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。
为实现该目标,RPC框架需提供一种透明的调用机制使使用者不必显式区分本地调用与远程调用
RPC调用分类:
RPC调用可以分为两种:
1)同步调用:客户方等待调用执行完成并返回执行结果
2)异步调用:客户方调用后不用等待执行结果返回,但依然可以通过回调方式获取执行结果
RPC结构拆解
RPC服务方通过RPCServer导出(export)远程接口方法,RPC客户方通过RPCClient导入(import)远程接口方法
客户方:
像调用本地方法一样调用远程接口方法,RPC框架实现接口的代理实现,实际的调用委托给代理RPCProxy
代理PRCProxy封装调用信息并将调用转交给PRCInvoker去实际执行
客户端的RPCInvoker通过连接器RPCConnector维持与服务端的通道RPCChannel,使用PRCProtocol执行协议编码,并将编码后的请求消息通过通道发送给服务方
服务方:
通过接收器RPCAcceptor接受客户端的调用请求,同样使用RPCProtocol执行协议解码
解码后的调用信息传递给RPCProcessor去控制处理调用过程
最后委托给PRCInvoker去实际执行调用并放回执行结果
各组件职责规划:
- RpcServer
负责导出(export)远程接口 - RpcClient
负责导入(import)远程接口的代理实现 - RpcProxy
远程接口的代理实现 - RpcInvoker
客户方实现:负责编码调用信息和发送调用请求到服务方并等待调用结果返回
服务方实现:负责调用服务端接口的具体实现并返回调用结果 - RpcProtocol
负责协议编/解码 - RpcConnector
负责维持客户方和服务方的连接通道和发送数据到服务方 - RpcAcceptor
负责接收客户方请求并返回请求结果 - RpcProcessor
负责在服务方控制调用过程,包括管理调用线程池、超时时间等 - RpcChannel
数据传输通道
(转)RPC原理详解的更多相关文章
- RPC原理详解
RPC 功能目标 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性. 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分 ...
- Spark2.1.0——内置RPC框架详解
Spark2.1.0——内置RPC框架详解 在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通.用户文件与Jar包的上传.节点间的Shuffle过程.Block数据的复制与备份等 ...
- Namenode HA原理详解(脑裂)
转自:http://blog.csdn.net/tantexian/article/details/40109331 Namenode HA原理详解 社区hadoop2.2.0 release版本开始 ...
- NFS原理详解
NFS原理详解 摘自:http://atong.blog.51cto.com/2393905/1343950 2013-12-23 12:17:31 标签:linux NFS nfs原理详解 nfs搭 ...
- Netty学习——服务器端代码和客户端代码 原理详解
服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol 协议层2.TFrameTransport 传输层3.THsh ...
- sso单点登录原理详解
sso单点登录原理详解 01 单系统登录机制 1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务 ...
- php中流行的rpc框架详解
什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...
- I2C 基础原理详解
今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...
- Zigbee组网原理详解
Zigbee组网原理详解 来源:互联网 作者:佚名2015年08月13日 15:57 [导读] 组建一个完整的zigbee网状网络包括两个步骤:网络初始化.节点加入网络.其中节点加入网络又包括两个 ...
随机推荐
- [威客任务]¥800.00 JS实现网站联动三级选项
任务地址:http://task.zhubajie.com/3275832/ 具体要求: 要求1) 选单样式参照附件2) 点击第一个选项内容后,跳出第二个选项栏位,并自动更新选项内容3) 点击第二个选 ...
- POJ 2003 Hire and Fire (Tree)
题目:Hire and Fire 题目翻译成数据结构就是:建树,加结点,删除结点,打印结点.只有删除结点稍微复杂点,因为删除设计掉树的调整. 首先要考虑树怎么存储才能使解题更顺手. 1.我们要存储每个 ...
- memset函数具体说明
1.void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c. 2.样例#include void main(){char ...
- springMVC整合xStream
一. 简单介绍: xStream能够轻易的将Java对象转换成xml.JSON.本篇博客将使用springMVC整合利用xStream转换xml. 关于xStream使用的博文:http://blog ...
- Test complete测试工具介绍
Test complete 是一款性价比比较高的测试工具,能够满足大多数用户的自动化测试的需求. Test complete 是近几年流行和发展起来的一款自动化测试工具,早期版本由Automated ...
- DHCP服务自动分配IP地址原理
转载自:http://blog.csdn.net/lycb_gz/article/details/8499559 DHCP在提供服务时,DHCP客户端是以UDP 68号端口进行数据传输的,而DHCP服 ...
- jsp HTTP Status 405 - HTTP method GET is not supported by this URL
package myservlet.control; import java.io.IOException; import java.io.PrintWriter; import javax.serv ...
- Intent实现页面跳转
Intent实现页面跳转: 1. startActivity(intent) 2. startActivityForResult(intent,requestCode); onActivityResu ...
- 深入理解计算机系统第二版习题解答CSAPP 2.14
假设x和y的字节值分别为0x66和0x39.填写下表,指明各个C表达式的字节值. 0x66 = 0110 0110(B) 0x39 = 0011 1001(B) 表达式 值 x & y 0x2 ...
- selendroid项目实战3 selendroid driver初始化失败问题
小米4/LG手机作为测试用机,随着测试时间变长,driver初始化失败率越来越高. 分析: 1.手机原因: 从小米换到LG,刚开始问题确实减少了,但是时间一长,又出现类似问题,提示Connect re ...