rpc简介

简介: 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. 配置与管理:根据需要配置负载均衡、身份验证、日志记录、监控等高级功能。
目录
相关文章
|
7月前
|
网络协议 测试技术 C++
一个不错的的rpc开源代码-rest_rpc
一个不错的的rpc开源代码-rest_rpc
128 0
|
2月前
|
自然语言处理 Dubbo Java
RPC基础
RPC基础
43 0
|
4月前
|
Dubbo 网络协议 Java
RPC框架:一文带你搞懂RPC
这篇文章全面介绍了RPC(远程过程调用)的概念、原理和应用场景,解释了RPC如何工作以及为什么在分布式系统中广泛使用,并探讨了几种常用的RPC框架如Thrift、gRPC、Dubbo和Spring Cloud,同时详细阐述了RPC调用流程和实现透明化远程服务调用的关键技术,包括动态代理和消息的编码解码过程。
RPC框架:一文带你搞懂RPC
|
5月前
|
分布式计算 负载均衡 数据安全/隐私保护
什么是RPC?有哪些RPC框架?
RPC(Remote Procedure Call,远程过程调用)是一种允许运行在一台计算机上的程序调用另一台计算机上子程序的技术。这种技术屏蔽了底层的网络通信细节,使得程序间的远程通信如同本地调用一样简单。RPC机制使得开发者能够构建分布式计算系统,其中不同的组件可以分布在不同的计算机上,但它们之间可以像在同一台机器上一样相互调用。
169 8
|
7月前
|
XML Go 开发工具
RPC简介和grpc的使用
RPC简介和grpc的使用
104 0
|
JSON 网络协议 Dubbo
gRPC(一)入门:什么是RPC?
RPC是一种方法,而HTTP是一种协议。两者都常用于实现服务,在这个层面最本质的区别是RPC服务主要工作在TCP协议之上(也可以在HTTP协议),而HTTP服务工作在HTTP协议之上。由于HTTP协议基于TCP协议,所以RPC服务天然比HTTP更轻量,效率更胜一筹。
434 0
gRPC(一)入门:什么是RPC?
|
缓存 运维 监控
|
分布式计算 Dubbo Java
手把手教你写一个RPC框架(二)
手把手教你写一个RPC框架(二)
154 0
手把手教你写一个RPC框架(二)
|
Dubbo 程序员 应用服务中间件
RPC 简介|学习笔记
快速学习 RPC 简介
RPC 简介|学习笔记
|
分布式计算 网络协议 算法
最简单的RPC框架实现
最简单的RPC框架实现
241 0
最简单的RPC框架实现