千家信息网

什么是RPC框架

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要介绍"什么是RPC框架",在日常操作中,相信很多人在什么是RPC框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"什么是RPC框架"的疑惑有所帮助!接下来,
千家信息网最后更新 2025年12月01日什么是RPC框架

这篇文章主要介绍"什么是RPC框架",在日常操作中,相信很多人在什么是RPC框架问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"什么是RPC框架"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

关于RPC

首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

比如说,一个方法可能是这样定义的:

Employee getEmployeeByName(String fullName)

那么:

  • 首先,要解决通讯的问题,主要是通过在客户端和服务器之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享同一个连接。

  • 第二,要解决寻址的问题,也就是说,A服务器上的应用怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址)以及特定的端口,方法的名称名称是什么,这样才能完成调用。比如基于Web服务协议栈的RPC,就要提供一个endpoint URI,或者是从UDDI服务上查找。如果是RMI调用的话,还需要一个RMI Registry来注册服务的地址。

  • 第三,当A服务器上的应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数的值要序列化成二进制的形式,也就是序列化(Serialize)或编组(marshal),通过寻址和传输将序列化的二进制发送给B服务器。

  • 第四,B服务器收到请求后,需要对参数进行反序列化(序列化的逆操作),恢复为内存中的表达方式,然后找到对应的方法(寻址的一部分)进行本地调用,然后得到返回值。

  • 第五,返回值还要发送回服务器A上的应用,也要经过序列化的方式发送,服务器A接到后,再反序列化,恢复为内存中的表达方式,交给A服务器上的应用

(图片来源:https://www.cs.rutgers.edu/~pxk/417/notes/03-rpc.html)

为什么RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如比如不同的系统间的通讯,甚至不同的组织间的通讯。由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用,

RPC的协议有很多,比如最早的CORBA,Java RMI,Web Service的RPC风格,Hessian,Thrift,甚至Rest API。

关于Netty

而Netty框架不局限于RPC,更多的是作为一种网络协议的实现框架,比如HTTP,由于RPC需要高效的网络通信,就可能选择以Netty作为基础。除了网络通信,RPC还需要有比较高效的序列化框架,以及一种寻址方式。如果是带会话(状态)的RPC调用,还需要有会话和状态保持的功能。

大体上来说,Netty就是提供一种事件驱动的,责任链式(也可以说是流水线)的网络协议实现方式。网络协议包含很多层次,很多部分组成,如传输层协议,编码解码,压缩解压,身份认证,加密解密,请求的处理逻辑,怎么能够更好的复用,扩展,业界通用的方法就是责任链,

一个请求应答网络交互通常包含两条链,一条链(Upstream)是从传输层,经过一系列步骤,如身份认证,解密,日志,流控,***到达业务层,一条链(DownStream)是业务层返回后,又经过一系列步骤,如加密等,又回到传输层。

这样每一层都有一个处理接口,都可以进行不同的操作,比如身份认证,加解密,日志,流控,将不同的处理实现像拼积木那样插接起来就可以实现一个网络协议了(快速开发)。每一层都有自己的实现,上层不需要关注面向网络的操作(可维护)。Netty已经提供了很多实现。

当然Netty还有许多好处,比如对非阻塞IO(NIO)的支持,比如在链上传递时***程度的减少buffer的copy(高性能)。

到此,关于"什么是RPC框架"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

服务 服务器 网络 框架 序列 方法 应用 方式 传输 不同 内存 过程 学习 也就是 二进制 参数 就是 更多 身份 身份认证 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 写一个数据库最难的地方 怀旧服服务器一区和五区的区别 数据库应该怎么玩 安卓usb共享网络安全性 八年级上册政治网络安全手抄报 文明青少年网络安全教育 快递物流管理软件开发 专科报计算机网络技术 用脚本查数据库数据修改日志 数据库新闻系统实训总结 成都地区网络安全培训机构 维护数据库安全性有哪些措施 中山哪里有学习网络技术的 香港服务器免备案出租 网络安全阅读理解100字 收信服务器地址是什么 数据库表怎么插入论文 计算机网络技术主要课程阐述 怎么从服务器下载文件 济南博塞网络技术有限公司 盐城网络安全审计系统咨询机构 网络存储服务器显示叹号 重庆市网络安全教育 中维世纪软件开发 待遇 服务器出现不安全提示 数据库安全性控制分哪两类 软件开发工程师文化建设方案 工商银行软件开发中心成都待遇 数据库课后习题十一章 数据库 名词解释 视图
0