服务远程调用(RPC)架构及原理

文章目录

  • 引言
  • 一、RPC架构与核心组件
  • 二、RPC调用流程解析
  • 三、关键技术实现
    • 1. 网络通信协议
    • 2. 序列化与反序列化
  • 四、RPC框架核心特性

在这里插入图片描述

引言

Simple RPC

在分布式系统中,服务远程调用(RPC) 是系统解耦与可扩展性的核心技术。它通过屏蔽底层通信细节,让开发者像调用本地函数一样使用远程服务。接下来我们将深入解析RPC的核心架构、通信流程及关键特性。


一、RPC架构与核心组件

RPC架构分为五个核心模块,各模块协同完成跨进程通信:

服务远程调用(RPC)架构及原理_第1张图片

组件 功能描述
客户端函数调用 开发者直接调用的接口(通常以SDK形式提供)
客户端存根 1. 从注册中心获取服务地址
2. 序列化请求并发送至网络
注册中心 服务实例的地址簿,实现服务注册与动态发现
服务端存根 1. 接收网络请求并反序列化
2. 调用真实服务逻辑
服务端函数 实际业务逻辑实现

二、RPC调用流程解析

客户端 客户端存根 注册中心 服务端存根 服务端 调用远程方法(参数) 查询服务地址 返回服务端地址 序列化请求参数 发送网络请求(TCP/HTTP) 反序列化请求 执行本地方法调用 返回结果 序列化响应数据 返回网络响应 反序列化结果 返回最终结果 客户端 客户端存根 注册中心 服务端存根 服务端

三、关键技术实现

1. 网络通信协议

  • HTTP协议
    典型实现:REST(JSON)、gRPC(Protobuf)、Hessian(二进制)
  • TCP协议
    高性能框架:Netty、MINA(Dubbo支持双协议)

2. 序列化与反序列化

  • 序列化协议对比

    协议 性能 可读性 跨语言
    Protobuf 支持
    JSON 支持
    XML(SOAP) 支持
  • 选型建议
    高性能场景选择Protobuf/Thrift,调试友好场景用JSON,传统企业系统可能采用SOAP。


四、RPC框架核心特性

  1. 协议透明性
    开发者无需关注底层使用HTTP或TCP协议,框架自动处理网络传输细节。

  2. 数据透明性
    接口调用与本地方法完全一致,参数自动完成序列化/反序列化。

  3. 跨语言支持
    通过IDL(接口描述语言)定义服务,支持多语言客户端生成(如gRPC支持10+语言)。

  4. 服务治理能力

    • 注册中心实现服务动态发现(如Nacos、Zookeeper)
    • 熔断降级(如Sentinel)
    • 负载均衡(如Ribbon)

服务远程调用(RPC)架构及原理_第2张图片

你可能感兴趣的:(【Simple,RPC】,rpc,架构,网络协议)