转自: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去实际执行调用并放回执行结果

各组件职责规划:

    1. RpcServer
      负责导出(export)远程接口
    2. RpcClient
      负责导入(import)远程接口的代理实现
    3. RpcProxy
      远程接口的代理实现
    4. RpcInvoker
      客户方实现:负责编码调用信息和发送调用请求到服务方并等待调用结果返回
      服务方实现:负责调用服务端接口的具体实现并返回调用结果
    5. RpcProtocol
      负责协议编/解码
    6. RpcConnector
      负责维持客户方和服务方的连接通道和发送数据到服务方
    7. RpcAcceptor
      负责接收客户方请求并返回请求结果
    8. RpcProcessor
      负责在服务方控制调用过程,包括管理调用线程池、超时时间等
    9. RpcChannel
      数据传输通道

(转)RPC原理详解的更多相关文章

  1. RPC原理详解

    RPC 功能目标 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性. 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分 ...

  2. Spark2.1.0——内置RPC框架详解

    Spark2.1.0——内置RPC框架详解 在Spark中很多地方都涉及网络通信,比如Spark各个组件间的消息互通.用户文件与Jar包的上传.节点间的Shuffle过程.Block数据的复制与备份等 ...

  3. Namenode HA原理详解(脑裂)

    转自:http://blog.csdn.net/tantexian/article/details/40109331 Namenode HA原理详解 社区hadoop2.2.0 release版本开始 ...

  4. NFS原理详解

    NFS原理详解 摘自:http://atong.blog.51cto.com/2393905/1343950 2013-12-23 12:17:31 标签:linux NFS nfs原理详解 nfs搭 ...

  5. Netty学习——服务器端代码和客户端代码 原理详解

    服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol   协议层2.TFrameTransport   传输层3.THsh ...

  6. sso单点登录原理详解

    sso单点登录原理详解     01 单系统登录机制    1.http无状态协议 web应用采用browser/server架构,http作为通信协议.http是无状态协议,浏览器的每一次请求,服务 ...

  7. php中流行的rpc框架详解

    什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 我的官方群点击此处. 通常我们调用一个php中的方法,比如这样一个函数方 ...

  8. I2C 基础原理详解

    今天来学习下I2C通信~ I2C(Inter-Intergrated Circuit)指的是 IC(Intergrated Circuit)之间的(Inter) 通信方式.如上图所以有很多的周边设备都 ...

  9. Zigbee组网原理详解

    Zigbee组网原理详解 来源:互联网 作者:佚名2015年08月13日 15:57   [导读] 组建一个完整的zigbee网状网络包括两个步骤:网络初始化.节点加入网络.其中节点加入网络又包括两个 ...

随机推荐

  1. iis启动网站提示 文件正在使用

    通常是端口被占用,使用netstat -ano,查看占用的进程pid,结束

  2. POJ 2003 Hire and Fire (Tree)

    题目:Hire and Fire 题目翻译成数据结构就是:建树,加结点,删除结点,打印结点.只有删除结点稍微复杂点,因为删除设计掉树的调整. 首先要考虑树怎么存储才能使解题更顺手. 1.我们要存储每个 ...

  3. WCF之初体验

    什么是WCF? WCF的全称是:Windows通信基础(WindowsCommunication Foundation).本质来讲,他是一套软件开发包. WCF和WebService的差别 Webse ...

  4. hdu 1348 Wall(凸包模板题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1348 Wall Time Limit: 2000/1000 MS (Java/Others)    M ...

  5. android125 zhihuibeijing 缓存

    ## 三级缓存 ## - 内存缓存, 优先加载, 速度最快 - 本地缓存(内存卡), 次优先加载, 速度快 - 网络缓存, 不优先加载, 速度慢,浪费流量 package com.itheima.zh ...

  6. Java_swing控件实例

    package ming; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event ...

  7. Android进阶笔记04:Android进程间通讯(IPC)之Messenger

    一. Android进程间通讯之Messenger 的引入 (1)引言:      平时一说进程间通讯,大家都会想到AIDL,其实messenger和AIDL作用一样,都可以进行进程间通讯.它是基于消 ...

  8. Service的启动与停止、绑定与解绑

    ---恢复内容开始--- Service的意义就在于当软件停止之后还可以在背景中进行运行,换句话也就是说,比如一个音乐播放器,当我们退出音乐播放器的时候,还是希望它在背景中运行,也就是一直播放着音乐, ...

  9. Android_Intent_startActivityForResult

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&q ...

  10. Java 8 Date Time API Example Tutorial – LocalDate, Instant, LocalDateTime, Parse and Format

    参考 Java 8 Date and Time API is one of the most sought after change for developers. Java has been mis ...