GRPC基础入门 | 青训营

36 阅读3分钟

RPC(Remote Procedure Call)简介

RPC,即远程过程调用,是一种计算机通信协议,用于使程序在不同地址空间的计算机上调用子程序或函数。它使得像本地调用一样可以调用位于远程服务器上的函数,隐藏了底层网络通信的复杂性,让分布式系统间的通信更加方便和透明。 RPC 的基本原理是,一个应用程序可以像调用本地函数一样调用远程服务器上的函数,而无需关心底层网络通信的细节。通常,一个 RPC 调用涉及到以下几个步骤:

客户端调用

客户端应用程序调用本地的代理函数,这些代理函数实际上会负责封装请求、网络通信等细节。

代理封装

代理函数将调用信息封装成一个消息,包括要调用的函数名、参数等。

网络传输

封装后的消息通过网络传输到远程服务器。

服务器处理

服务器接收到消息后,解析消息,调用相应的函数并传入参数。

结果返回

服务器执行完函数后,将结果封装成消息返回给客户端。

客户端解析

客户端接收到结果消息,解析出结果数据供应用程序使用。

gRPC 框架介绍

gRPC 是一个由 Google 开发的开源 RPC 框架,它构建在 HTTP/2 协议之上,支持多种编程语言,如 C++, Java, Python, Go 等。gRPC 提供了强大的功能集,使得跨网络的服务间通信变得高效、灵活且易于扩展。

gRPC 的特点和优势

多语言支持

gRPC 支持多种编程语言,这使得不同语言编写的服务可以方便地相互通信。

基于 HTTP/2

gRPC 使用 HTTP/2 作为底层协议,带来了更低的延迟和更高的效率。HTTP/2 支持多路复用、头部压缩等特性。

IDL 定义

gRPC 使用 Protocol Buffers(简称 Protobuf)作为接口定义语言(IDL),它可以用于定义服务和消息的结构,从而实现强类型的通信。

双向流式通信

gRPC 支持双向流式通信,客户端和服务器可以同时发送多个消息,这对于实现实时性要求较高的应用很有帮助。

负载均衡

gRPC 内置了负载均衡功能,可以自动将请求分发到可用的服务器实例上。

拦截器

gRPC 提供拦截器机制,可以在请求和响应的不同阶段添加自定义逻辑,如认证、日志记录等。

跨平台

由于支持多种编程语言,gRPC 可以在不同平台上进行开发和部署。

总结

RPC 是一种用于实现远程服务调用的通信协议,而 gRPC 则是基于 HTTP/2 的跨语言 RPC 框架,具有高效、强大和易用的特点,适用于构建各种规模的分布式系统。