前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RPC 架构初探

RPC 架构初探

作者头像
IMWeb前端团队
发布2019-12-03 18:06:39
5760
发布2019-12-03 18:06:39
举报
文章被收录于专栏:IMWeb前端团队IMWeb前端团队

本文作者:IMWeb Jianglinyuan 原文出处:IMWeb社区 未经同意,禁止转载

RPC 架构初探

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

RPC概念术语在上世纪80年代由Bruce Jay Nelson提出,在他的论文中对RPC进行了如下的总结:

  • 简单:RPC概念的语义十分清晰和简单,这样建立分布式计算就更容易。
  • 高效:过程调用看起来十分简单并且高效。
  • 通用:在单机计算中过程往往是不同算法和API,跨进程调用最重要的是通用的通信机制。

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

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

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

  • 远程服务提供者需要以某种形式提供调用服务相关的信息,包括不限于服务接口、数据结构,或者中间态的服务定义文件,例如Thrift的IDL文件,WS-RPC的WSDL文件定义,甚至也可以是服务端的接口说明文档;服务调用者需要通过一定的途径获取远程服务调用相关信息,例如服务器端接口定义Jar包导入,获取服务度IDL文件等。
  • 远程代理对象:服务调用者调用的服务实际是远程服务的本地代理,对于Java语言,它的实现是JDK的动态代理,通过动态代理的拦截机制,将本地调用封装成远程调用服务等等。
  • 通信:RPC框架与具体的协议无关,例如Spring的远程调用支持HTTP Invoke、RMI Invoke,MessagePeck使用的是私有的二进制压缩协议。
  • 序列化:远程通信,需要将对象转换成二进制码流进行网络传输,不同的序列化框架,支持的数据类型、数据包大小、异常类型以及性能等都不同。不同的RPC框架的应用场景也不同,因此技术选择会存在很大的差异。一些做的比较好的RPC框架,可以支持多种序列化方式,有的甚至支持用户自定义序列化框架(Hadoop Arvo)。

业界开源的RPC框架非常多,比较主流的RPC框架列举如下:

  • 由Facebook开发的远程服务调用框架Apache Thrift。
  • Hadoop的子项目Arvo-RPC。
  • Caucho提供的基于binary-RPC实现的远程通信框架Hessian。
  • Google开源的基于HTTP/2和ProtoBuf的通用RPC框架gRPC。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RPC 架构初探
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档