扫一扫,关注公众号

rpc框架

RPC框架全面解析

一、RPC基本概念

RPC(Remote Procedure Call,远程过程调用)是一种用于实现分布式系统中不同进程或计算机之间通信的编程模型[2]。它提供了一种类似于本地函数调用的方式,使得在远程计算机上执行的函数或方法可以像本地调用一样被调用[2]。

核心特点:

1. 客户端-服务器模型:基于客户端-服务器架构,客户端发起请求,服务器接收并执行操作后返回结果[2]
2. 网络通信抽象:隐藏底层网络细节,开发者无需关注网络通信的具体实现[2]
3. 跨层通信:在OSI网络模型中跨越传输层和应用层[1]

二、RPC工作原理

完整调用流程:

1. 客户端调用:服务消费方(client)以本地调用方式调用客户端存根(stub)[5]
2. 请求封装:client stub将方法名、参数等打包并通过网络发送到服务端[5]
3. 服务端处理:服务端收到消息后解码,调用本地实际服务[5]
4. 结果返回:服务端执行后将结果打包返回给客户端[5]
5. 客户端接收:client stub接收并解码消息,消费方获得最终结果[5]

关键技术组件:

- 接口定义语言(IDL):描述远程调用接口,确保客户端和服务器接口一致性[2]
- 序列化/反序列化:参数和结果在网络传输前后的格式转换[2]
- 传输协议:支持HTTP、TCP或UDP等多种协议[2]

三、RPC发展历史

1. 起源:概念最早由Nelson在1981年提出,1984年Birrell和Nelson应用于异构分布式系统通信[1]
2. 标准化:最初由Sun公司提出,后经IETF ONC宪章修订成为标准协议[1]
3. 主流实现:目前最普遍的是开放式软件基础的分布式计算环境(DCE)[1]

四、RPC与相关技术对比

RPC与HTTP:

- RPC是一种思想或模式,可以通过多种方式实现,包括TCP或HTTP[5]
- 例如Dubbo基于TCP,gRPC基于HTTP/2.0[5]
- 两者属于不同层级,不具有直接可比性[5]

RPC与本地调用:

- 本地调用(LPC)用于多任务操作系统中的进程间通信[1]
- RPC类似于LPC,但工作于网络环境[1]
- 主要区别在于跨网络通信带来的复杂性[8]

五、常见RPC框架实现

1. 基本组件:通常包含RpcServer、RpcService、RpcSystem、RpcEndpoint等设计封装[3]
2. 端口管理:RPC服务使用UUID注册,通过端口映射器(如135端口)动态获取服务端口[4]
3. 代理机制:通过存根(stub)实现远程服务的本地代理功能[8]

六、RPC的应用场景

1. 分布式系统:不同计算机间的服务调用[6]
2. 微服务架构:服务间的通信与协作[6]
3. 计算能力扩展:在多台机器组成的集群上部署应用[6]

七、RPC框架需要解决的关键问题

1. 代理问题:实现远程服务的本地透明调用[5]
2. 序列化问题:数据在网络传输中的格式转换[5]
3. 寻址问题:如何定位远程服务和方法[6]
4. 通信协议:选择合适的传输协议和连接方式[6]

[1] 远程过程调用协议(信息传输协议)-百科
[2] 认识RPC | 青训营- 掘金
[3] RPC简单介绍_rpc system-CSDN博客
[4] 究竟什么是RPC?_rpc端口-CSDN博客
[5] RPC简介-CSDN博客
[6] 关于RPC的介绍-CSDN博客
[7] 【分布式服务】RPC 简介-CSDN博客
[8] 远程过程调用(RPC)简介_rpc传递引用或者指针-CSDN博客

小兔盘
夸克网盘
2023-01《思考的框架》
小兔盘
夸克网盘
聪明人都用框架找答案
小兔盘
百度网盘
框架
小兔盘
百度网盘
框架
小兔盘
百度网盘
框架
小兔盘
百度网盘
框架
小兔盘
百度网盘
Xposed框架
小兔盘
百度网盘
Xposed框架
小兔盘
百度网盘
web框架
小兔盘
百度网盘
开发框架
小兔盘
百度网盘
框架.ra
小兔盘
阿里云盘
框架思维
小兔盘
阿里云盘
西瓜框架
小兔盘
阿里云盘
Web框架
小兔盘
百度网盘
SM框架
小兔盘
百度网盘
框架图
小兔盘
百度网盘
SH 框架
小兔盘
夸克网盘
致命框架
小兔盘
阿里云盘
4 Spring框架
小兔盘
百度网盘
spring mvc框架
最新搜索
热门搜索
历史搜索

未经允许不得转载:哪吒搜索 » rpc框架

相关推荐

    暂无内容!

评论

1+4=