rpc简介

RPC (Remote Procedure Call)

RPC 是一种分布式计算技术,允许一个计算机程序(客户端)在本地调用另一个计算机程序(服务器)的方法或函数,就像调用本地代码一样,尽管这些程序可能运行在不同的网络环境中,甚至可能使用不同的操作系统和编程语言。RPC 提供了一种抽象,让开发者无需直接处理底层网络通信细节(如 socket 编程、序列化、反序列化、错误处理等),就能实现跨进程、跨网络的服务调用。

核心概念与工作原理:

  1. 接口定义:首先,需要定义服务接口(包括方法名、参数类型、返回类型等),描述客户端可以调用的远程操作。接口定义通常是平台无关的,可以通过 IDL(Interface Definition Language)如 Google 的 Protocol Buffers(protobuf)来编写。

  2. 客户端 stub:客户端拥有一个本地的代理对象(stub),它实现了服务接口。当客户端调用这个 stub 的方法时,实际发生的是对远程服务的调用请求封装成网络消息发送出去。

  3. 服务端 stub:服务端同样有一个 stub,它接收来自客户端的请求消息,解封请求数据,调用实际的服务逻辑,然后将执行结果打包成响应消息返回给客户端。

  4. 网络通信:客户端和服务端通过网络协议(如 TCP/IP)交换请求和响应消息。这些消息需要经过序列化(将数据结构转换为适合网络传输的字节流)和反序列化(将字节流还原为原数据结构)过程。

  5. 透明性:对于客户端程序员而言,调用远程服务就如同调用本地函数一样,无需关心网络连接、数据传输、错误处理等复杂细节。RPC 框架负责处理这些底层任务,提供了一种跨网络、跨语言的透明调用体验。

RPC 的优点:

  • 抽象复杂性:简化分布式系统开发,屏蔽底层网络通信细节。
  • 模块化与解耦:服务间通过接口定义进行交互,有利于系统架构的模块化和松耦合。
  • 跨语言与跨平台:通过统一的接口定义,支持不同语言、不同平台间的互操作。
  • 易扩展与维护:服务可以独立部署、升级,不影响其他服务,利于系统规模的伸缩和维护。

gRPC

gRPC 是一个高性能、开源、通用的 RPC 框架,由 Google 主导开发。它基于 HTTP/2 协议标准,并广泛使用 Google 的 Protocol Buffers(protobuf)作为接口描述语言和默认的数据序列化方式。gRPC 的主要特点如下:

  1. HTTP/2 支持:利用 HTTP/2 的多路复用、二进制帧、头部压缩、优先级控制等特点,实现高效、低延迟的通信。同时,由于基于 HTTP/2,gRPC 能够轻松穿越大多数防火墙和代理。

  2. protobuf:使用 protobuf 作为接口定义语言(IDL)和数据交换格式,提供强类型、语言无关、高效的序列化与反序列化能力。protobuf 支持丰富的数据类型,并且可以自动为多种编程语言生成对应的 stub 代码。

  3. 多语言支持:gRPC 原生支持 C、Java、Go、Python、Node.js、Ruby、Objective-C、PHP、C# 等多种编程语言,使得不同语言编写的微服务可以无缝互操作。

  4. 服务类型:gRPC 支持多种服务类型,包括 unary(一发一收)、server streaming(一发多收)、client streaming(多发一收)和 bidirectional streaming(双向流),满足不同场景下的通信需求。

  5. 工具链完善:提供了丰富的开发、调试、测试、监控工具,如服务发现、负载均衡、健康检查、跟踪、日志、认证与授权等功能。

使用 gRPC 的步骤大致如下:

  1. 定义服务接口:使用 protobuf 文件定义服务接口和消息类型。

  2. 生成代码:使用 protobuf 编译器生成对应语言的 stub 代码。

  3. 实现服务:服务端实现 protobuf 生成的服务接口代码。

  4. 启动服务:服务端启动 gRPC 服务器,监听指定端口。

  5. 调用服务:客户端创建 gRPC 客户端实例,通过 stub 调用远程服务方法。

  6. 配置与管理:根据需要配置负载均衡、身份验证、日志记录、监控等高级功能。

相关推荐
微硬创新1 小时前
耐达讯自动化16路0-20mA转PROFINET协议转换模块技术说明
人工智能·网络协议·自动化·信息与通信
2601_949499944 小时前
芯瑞科技 DT-1414 光模块工程实测:完美兼容博通(安华高) HFBR-1414PTZ,VCSEL 替代方案
大数据·网络·人工智能·科技·光模块
2501_915918415 小时前
iOS 怎么抓包?抓包鹰系统级 网卡 应用层三种方式对比,不越狱抓 iPhone 流量
网络协议·计算机网络·网络安全·ios·adb·https·udp
云边云科技_云网融合5 小时前
连锁门店 POS、监控、IoT 设备网络不稳定怎么解决?
网络·物联网
XR1234567886 小时前
学校宿舍区网络方案对比:多终端高并发下的认证、管理与体验
网络
March.s7 小时前
IP 存储核心 iSCSI:原理拆解 + 无报错实战指南
网络·网络协议·tcp/ip
超智算科技7 小时前
超智算领衔协办“NVIDIA创业企业展示·西安站”,全栈AI服务赋能行业生态协同发展
大数据·网络·人工智能·物联网·百度
空杆推不起8 小时前
企业数据加密实战:传输链路与存储层全场景落地指南
网络·安全·web安全
️学习的小王8 小时前
基于UDP实现简易聊天室(基础版)——Python实现
网络·python·udp
砚凝霜8 小时前
软考网络工程师|第 5 章 路由基础、静态路由、RIP、OSPF、BGP、IS-IS 完整备考笔记
网络·笔记