1、RPC概述

  RPC(Remote Procedure Call)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。主要是为了应对当前互联网项目量级越来越大而出现的。

2、Broker模式介绍

  

3、RPC结构拆解

  

4、RPC客户端组件与职责

  -RpcClient:负责导入远程接口的代理实现

  -RpcProxy:远程接口的代理实现

  -RpcInvoker:负责编码和发送调用请求到服务方并等待结果

  -RpcProtocol:负责协议的编/解码

  -RpcConnector:负责维护客户/服务方连接通道和发送数据到服务方

  -RpcChannel:数据传输通道

5、RPC服务端组件与职责

  -RpcServer:负责导出远程接口

  -RpcInvoker:负责调用服务端接口的具体实现并返回结果

  -RpcProtocol:负责协议的编/解码

  -RpcAcceptor:负责接收客户方请求并返回请求结果

  -RpcProcessor:负责在服务方控制调用过程,包括线程池、超时等

  -RpcChannel:数据传输通道

6、RPC导出/导入远程接口

7、RPC数据传输

  -传输协议:建议选择稳定性较强的连接协议(HTTP、TCP),像UDP就不建议选择

  -连接:长连接、短连接、心跳机制

8、RPC序列化

  -序列化/反序列化:接口方法、方法参数、调用属性等

  -编码格式:XML、JSON、Binary...

  -关注点:效率、字节长度、兼容性...

9、RPC方法调用

  -RpcInvoker:反射机制

  -RpcProcessor:调用效率、资源隔离、超时控制

10、RPC异常处理

  -远程调用不一定执行

  -远程调用可能排除RPC框架自带的异常

  -性能差异

11、RPC实例

  实例代码移步https://github.com/cq1415583094/RPC-Demo

面向服务架构之RPC原理与实例的更多相关文章

  1. [.NET领域驱动设计实战系列]专题二:结合领域驱动设计的面向服务架构来搭建网上书店

    一.前言 在前面专题一中,我已经介绍了我写这系列文章的初衷了.由于dax.net中的DDD框架和Byteart Retail案例并没有对其形成过程做一步步分析,而是把整个DDD的实现案例展现给我们,这 ...

  2. 面向服务架构(SOA)和企业服务总线(ESB)

    http://www.cnblogs.com/shanyou/archive/2008/04/19/1161452.html 学习和研究在企业中实施面向服务架构(SOA),简单回顾SOA和ESB,重点 ...

  3. SOA面向服务架构简述

    在上篇中我们简单谈了下架构设计中服务层的简单理解,在这里我们将继续服务层的架构,在本节我们将重点在于分布式服务.在分布式系统中表现层和业务逻辑层 并不处于同一物理部署,所以我们必须存在分布式服务,以契 ...

  4. 从面向服务架构(SOA)学习:微服务时代应该借鉴的5条经验教训

    [编者按]本文作者为 Matt McLarty,通过介绍 SOA 的兴衰变化,总结了微服务应该借鉴的5条经验教训.文章系国内 ITOM 管理平台 OneAPM 编译呈现. SOA 的兴衰变化让我们更了 ...

  5. (转)漫谈SOA(面向服务架构)

    http://blog.csdn.net/luohuacanyue/article/details/12521699 面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单的认为服务化是模 ...

  6. OSGi——面向服务架构规范简述

    OSGi——面向服务架构规范简述 去年我们组要开发一个新的产品,在讨论产品架构路线的时候,美国的架构师向大家征集了架构设计思想(我推荐了SCSF),有一位工程师向他推荐了OSGi.以前我还没有听过OS ...

  7. [置顶] 漫谈SOA(面向服务架构)

    面向服务架构的思想在整个软件的架构中已经不是什么新鲜的东西.我简单的认为服务化是模块化的延伸,所以服务化有着和模块化类似的优点和缺点.这里不再讨论这些服务定义服务与服务之间的通信协议(像WSDL等等) ...

  8. SOA面向服务架构

    SOA面向服务架构 风尘浪子 只要肯努力,梦想总有一天会实现 随笔分类 - SOA面向服务架构 结合领域驱动设计的SOA分布式软件架构 摘要: 领域驱动设计DDD的总体结构,Repository层使用 ...

  9. SOA(面向服务架构)——踩坑后反思:这样值得吗?

    SOA(面向服务架构)——踩坑后反思:这样值得吗?

随机推荐

  1. monkeyrunner操作多个设备的例子

    # -*- coding: utf-8 -*-   from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice from com.an ...

  2. 安装交叉工具链arm-linux-gcc

    基本步骤如下: (1)建立目录 $ sudo mkdir /usr/local/arm (2)复制文件 文件arm-linux-gcc-4.4.3.tar.gz,放在/var/ftp中,进入ftp,$ ...

  3. 交换机配置——STP实验(指定特定交换机为根桥)

    一.实验目的:将三层交换机Switch3设置为根桥交换机 二.拓扑图如下: 三.具体步骤 先说明一下,四个交换机形成环路,为解决环路问题交换机会自动进行选举,选举出一个根源,根桥交换机会决定一个最佳路 ...

  4. poj 3641 Pseudoprime numbers 快速幂+素数判定 模板题

    Pseudoprime numbers Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7954 Accepted: 3305 D ...

  5. hadoop hdfs hbase优化实例

    需求描述: 从hdfs中获取数据,字段url需要计算出url_type 通过进行hive的left outer join ,效率非常低.故将url的类型导入到hbase中,利用hbase快速查询的特点 ...

  6. Django框架使用

    ---恢复内容开始--- Django 创建第一个项目 本章我们将介绍Django 管理工具及如何使用 Django 来创建项目,第一个项目我们以 HelloWorld 来命令项目. Django 管 ...

  7. [CSP-S模拟测试]:凉宫春日的忧郁(乱搞)

    题目传送门(内部题101) 输入格式 第一行输入一个整数$T$,表示数据组数. 接下来$T$行,每行两个数$X,Y$,表示$T$组数据. 输出格式 输出共有$T$行,对于每一组数据,如果$X^Y\le ...

  8. java 根据html模板生成html文件

    1.代码部分 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test. ...

  9. JDK7 JDK8 的安装 且不同版本之间的切换

    myeclipse 论坛下载 https://www.myeclipsecn.com/download/ 用户名:xcj26 邮箱:xcj26@126.com 密码: 26**_X** 版本: Jav ...

  10. LeetCode 36. 有效的数独(Valid Sudoku)

    题目描述 判断一个 9x9 的数独是否有效.只需要根据以下规则,验证已经填入的数字是否有效即可. 数字 1-9 在每一行只能出现一次. 数字 1-9 在每一列只能出现一次. 数字 1-9 在每一个以粗 ...