首页>JAVA>正文

RPC架构与原理,以及业界主流的RPC框架简介

时间:2018-08-03 11:37:12   来源:上海尚学堂   阅读:
同学们好,上次我们讲过MVC垂直应用框架,提到了RPC框架,那今天我们就讲述RPC框架。


一、RPC架构简介

RPC的全称是Remote Procedure Call,它是一种进程间通信方式。允许像调用本地服务一样调用远程服务,它的具体实现方式可以不同,例如Spring的 HTTP Invoker,Facebook的 Thrift二进制私有协议通信。

RPC概念术语在上世纪80年代由 Bruce Jay Nelson提出,在他的论文中对RPC进行了如下总结。
1)简单:RPC概念的语义十分清晰和简单,这样建立分布式计算就更容易。
2)高效:过程调用看起来十分简单而且高效。
3)通用:在单机计算中过程往往是不同算法和APl,跨进程调用最重要的是通用的通信机制。

2006年之后,随着移动互联网的发展,各种智能终端的普及,远程分布式调用已经成为主流,RPC框架也如雨后春笋般诞生,开源和自研的RPC框架的普及标志着传统垂直应用架构时代的终结。


二、RPC框架原理

RPC框架的目标就是让远程过程(服务)调用更加简单、透明,RPC框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式( XML/JSON/二进制)和通信细节。框架使用者只需要了解谁在什么位置提供了什么样的远程服务接口即可,开发者不需要关心底层通信细节和调用过程。

RPC框架的调用原理图如下:
 
 

三:RPC框架核心技术点

RPC框架实现的几个核心技术点总结如下:

1)远程服务提供者需要以某种形式提供服务调用相关的信息,包括但不限于服务接口定义、数据结构,或者中间态的服务定义文件,例如 Thrift的IDL文件, WS-RPC的WSDL文件定义,甚至也可以是服务端的接口说明文档;服务调用者需要通过一定的途径获取远程服务调用相关信息,例如服务端接口定义Jar包导入,获取服务端1DL文件等。

2)远程代理对象:服务调用者调用的服务实际是远程服务的本地代理,对于Java语言,它的实现就是JDK的动态代理,通过动态代理的拦截机制,将本地调用封装成远程服务调用.

3)通信:RPC框架与具体的协议无关,例如Spring的远程调用支持 HTTP Invoke、RMI Invoke, MessagePack使用的是私有的二进制压缩协议。

4)序列化:远程通信,需要将对象转换成二进制码流进行网络传输,不同的序列化框架,支持的数据类型、数据包大小、异常类型及性能等都不同。不同的RPC框架应用场景不同,因此技术选择也会存在很大差异。一些做得比较好的RPC框架可以支持多种序列化方式,有的甚至支持用户自定义序列化框架( Hadoop Avro)。

四、业界主流的RPC框架

业界主流的RPC框架很多,比较出名的RPC主要有以下4种:
 
1)、由Facebook开发的原创服务调用框架Apache Thrift;
2)、Hadoop的子项目Avro-RPC;
3)、caucho提供的基于binary-RPC实现的远程通信框架Hessian;
4)、Google开源的基于HTTP/2和ProtoBuf的通用RPC框架gRPC
 
 本文参考《分布式服务框架原理及实战》,李林锋著
RPC框架就讲到这,下次我们再学习SOA服务化架构。

返回本栏目了解上海尚学堂Java培训更多技术文章。联系客服小姐姐可以获取java培训资料,或者预定上海尚学堂Java培训免费试听名额。
分享:0

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

021-67690939
15201841284

微信扫一扫