当前位置: 首页 > java >正文

RPC是什么

远程过程调用(Remote Procedure Call,RPC)是一种允许程序调用远程服务像调用本地函数一样的技术,其核心目标是简化分布式系统中的跨进程通信。

一、RPC的本质

RPC 屏蔽了网络通信的复杂性,让开发者无需手动处理网络协议、序列化等底层细节。例如,调用远程的 getUserInfo(userId) 方法时,代码表现与本地调用无异,但实际执行发生在另一台服务器上。

二、RPC的核心流程

1.客户端调用

客户端调用本地代理(Stub)方法,例如 userService.getUser(123)
关键点:代理对象由RPC框架自动生成,伪装成真实服务接口。

2.序列化请求

将方法名(如 getUser)、参数(如 123)序列化为二进制数据(如通过Protobuf或JSON)。
为什么需要序列化? 网络只能传输字节流,结构化数据必须转为二进制。

3.网络传输

通过TCP/HTTP等协议发送请求到服务端。
优化点:高性能RPC框架(如gRPC)通常使用TCP长连接减少握手开销。

4.服务端处理

服务端反序列化请求数据,根据方法名找到实现类,执行真实逻辑(如查询数据库)。
服务注册与发现:服务端启动时向注册中心(如Zookeeper)注册自身地址。

5.返回响应

服务端将结果序列化后回传,客户端反序列化并返回给调用方。

三、关键技术组件

1.序列化协议

  • JSON:易读但性能低,适合HTTP API。

  • Protobuf/Thrift:二进制协议,体积小、速度快,RPC主流选择。

  • Avro:Schema动态化,适合大数据场景。

2.网络通信

  • TCP协议:主流选择,需处理粘包/拆包(通过定长消息或分隔符)。

  • HTTP/2:gRPC采用,支持多路复用,降低延迟。

3.服务发现

  • 客户端发现:客户端查询注册中心(如Consul)获取服务IP列表。

  • 服务端发现:通过负载均衡器(如Nginx)路由请求。

4.负载均衡

  • 随机/轮询:简单但无法感知服务器状态。

  • 一致性哈希:相同请求总落到同一节点,适合缓存场景。

  • 加权策略:根据服务器CPU、负载动态分配流量。

四、核心挑战与解决方案

1.网络不可靠性

  • 超时机制:设置调用超时(如3秒),防止线程长期阻塞。

  • 重试策略:幂等操作可重试(如查询),非幂等操作(如支付)需避免重复提交。

  • 熔断降级:Hystrix等工具在服务故障时快速失败,避免雪崩。

2.性能优化

  • 连接池:复用TCP连接,减少握手开销。

  • 异步调用:Future或回调机制提升吞吐量,例如Dubbo的AsyncContext。

3.跨语言支持

  • IDL(接口描述语言):如gRPC使用 .proto 文件定义接口,生成多语言客户端代码。

http://www.xdnf.cn/news/4061.html

相关文章:

  • Linux文件复制命令精要指南:cp与scp详解
  • Three.js + React 实战系列 - 客户评价区细解教程 Clients 组件✨(回答式评价 + 评分星级)
  • 51c大模型~合集124
  • TS 类型兼容性
  • 乡村饮用水厂无线网络规划与设计:融合 LoRaWAN、5G、Mesh 的分层异构方案
  • unity TMP字体使用出现乱码方框
  • 最长回文子串(动规 + 中心拓展)
  • 反转字符串2
  • 杰理-JL701-充电开机,芯片不进入休眠
  • Spring Boot 中 @Bean 注解详解:从入门到实践
  • 无人机 | 无人机设计概述
  • Springclound常用五大组件及其使用原理
  • 防止交叉验证中的数据泄露:提升模型在实际环境中的性能
  • 怎样获得真实带宽之宽带升级后
  • 014枚举之指针尺取——算法备赛
  • C++类与对象深度解析:从基础到应用
  • kotlin 01flow-StateFlow 完整教程
  • Python-numpy中ndarray对象创建,数据类型,基本属性
  • 【免费分享无广告】刷视频助手抖音快手小红书视频号自动脚本刷视频养号
  • 前端面试每日三题 - Day 25
  • Netty的内存池机制怎样设计的?
  • 专业化婴幼儿托育服务与管理实训室建设方案
  • Easy云盘总结篇-回收站
  • 组合两个表 --- MySQL [Leetcode 题目详解]
  • 备战全国信息素养大赛 图形化挑战赛——约数和
  • “公共类 XXX 应该在文件中出现”错误怎么查找解决
  • 项目管理学习-CSPM(1)
  • MCP与API集成的最佳实践:高效连接,智能驱动
  • 谈判模拟器 - Gemini 2.5 商业优化版
  • JGQ626Ⅲ数据采集旋风除尘与袋式除尘组合实验装置