gRPC的理解(1)-RPC和gRPC概念

    ​本篇先介绍RPC与gRPC的基本概念,后续会结合具体原理及源码和例子来对gRPC进行详细介绍。    

RPC基本概念   

    远程过程调用(Remote Procedure Call,简称RPC)是一种计算机通信协议,用于使一个程序中的函数(称为远程过程)能够在另一个计算机网络中的远程计算机上执行,就像在本地计算机上执行一样。

    RPC允许开发人员像调用本地函数一样调用远程函数,具有以下基本概念:

    1.客户端(Client):客户端是发起远程调用请求的程序。它调用远程过程,传递所需的参数,并等待远程执行结果。

    2.服务器(Server):服务器是远程计算机上运行的程序,它提供了远程过程的实际实现。当客户端发起远程调用请求时,服务器接收请求并执行相应的远程过程,然后将结果返回给客户端。

    3.远程过程(Remote Procedure):远程过程是服务器端提供给客户端调用的函数。它具有输入参数和返回值,并在服务器上执行特定的逻辑操作。

    4.代理(Proxy):代理是在客户端和服务器之间充当中间人的组件。客户端通过代理发送请求到服务器,并接收服务器返回的结果。代理在底层处理远程调用的细节,例如网络通信、数据序列化和反序列化等。

    5.序列化和反序列化:在远程调用过程中,需要将函数的参数和返回值进行序列化(转换为二进制格式)以便在网络上传输,并在接收方进行反序列化(还原为对应的数据格式)。这些序列化和反序列化操作由RPC框架自动处理。

    通过使用RPC,开发人员可以将应用程序的不同部分分布在不同的计算机上,并允许它们通过远程调用进行交互。这种分布式的设计模式使得系统更加模块化、可扩展,并且允许不同的部分使用不同的编程语言和技术栈。

    远程过程调用(Remote Procedure Call,简称RPC)是一种计算机通信协议,用于使一个程序中的函数(称为远程过程)能够在另一个计算机网络中的远程计算机上执行,就像在本地计算机上执行一样。

RPC允许开发人员像调用本地函数一样调用远程函数,具有以下基本概念:

    1.客户端(Client):客户端是发起远程调用请求的程序。它调用远程过程,传递所需的参数,并等待远程执行结果。

    2.服务器(Server):服务器是远程计算机上运行的程序,它提供了远程过程的实际实现。当客户端发起远程调用请求时,服务器接收请求并执行相应的远程过程,然后将结果返回给客户端。

    3.远程过程(Remote Procedure):远程过程是服务器端提供给客户端调用的函数。它具有输入参数和返回值,并在服务器上执行特定的逻辑操作。

    4.代理(Proxy):代理是在客户端和服务器之间充当中间人的组件。客户端通过代理发送请求到服务器,并接收服务器返回的结果。代理在底层处理远程调用的细节,例如网络通信、数据序列化和反序列化等。

    5.序列化和反序列化:在远程调用过程中,需要将函数的参数和返回值进行序列化(转换为二进制格式)以便在网络上传输,并在接收方进行反序列化(还原为对应的数据格式)。这些序列化和反序列化操作由RPC框架自动处理。

    通过使用RPC,开发人员可以将应用程序的不同部分分布在不同的计算机上,并允许它们通过远程调用进行交互。这种分布式的设计模式使得系统更加模块化、可扩展,并且允许不同的部分使用不同的编程语言和技术栈。

    总的来说,RPC是一种通信协议,它允许开发人员通过远程调用方式调用远程服务器上的函数,使得分布式系统的开发更加简单和方便。

gRPC基本概念

    gRPC(Google Remote Procedure Call)是由Google开发的一种高性能、跨语言的远程过程调用(RPC)框架,它基于HTTP/2协议和Protocol Buffers进行通信和数据序列化。以下是gRPC的主要概念:

    1. 服务定义:在gRPC中,您首先需要定义一个服务,该服务由一组RPC方法组成。服务定义使用Protocol Buffers语言来描述RPC方法的输入和输出消息类型以及方法名。

    2. 数据序列化:gRPC使用Protocol Buffers作为默认的接口描述语言和数据序列化格式。Protocol Buffers是一种轻量、高效的二进制序列化机制,它可以定义消息的结构和字段,用于在不同的平台和语言之间进行数据传输和序列化/反序列化操作。

    ​3. RPC方法:RPC方法是服务中的函数,客户端可以通过调用这些方法来发送请求并获取响应。每个RPC方法都具有一个输入消息和一个输出消息,并且可以使用不同的调用类型(单一请求-单一响应、请求-流式响应、流式请求-单一响应,以及双向流式)。

    ​4. 代码生成器:gRPC提供了强大的代码生成器工具,可以根据服务定义生成用于客户端和服务器的代码。这使得开发人员可以直接使用生成的接口和存根,而不需要手动编写网络通信和序列化代码。

    ​5. 服务器:服务器是提供RPC服务的一方。gRPC服务器通过监听指定的网络端口,接受来自客户端的RPC请求,并将请求转发到相应的服务实现来处理。它还负责将处理结果返回给客户端。

    ​6. 客户端:客户端是发起RPC请求的一方。使用生成的客户端代码,客户端可以像调用本地函数一样调用远程服务的RPC方法,并发送请求并等待响应。

    ​7. 流式通信:gRPC支持基于HTTP/2的双向流式通信。这意味着客户端和服务器可以同时发送和接收多个消息,实现高效的实时交互和流式处理。

    ​8. 元数据:gRPC的请求和响应消息可以附带元数据(Metadata),用于携带一些附加的信息,例如验证凭证、跟踪标识等。

    ​9. 安全性:gRPC支持基于Transport Layer Security(TLS)的安全通信,可以保护传输的数据的机密性和完整性。它还支持各种身份验证机制,例如基于令牌的身份验证和客户端证书验证。

下面是gRPC的框架图:    ​

    ​总的来说,gRPC是一个强大的RPC框架,提供了跨语言、高性能、高效的远程服务调用机制。它使用了现代化的通信协议和数据序列化格式,支持流式通信和安全性,并提供了自动生成的代码和强大的工具生态系统。通过使用这些概念,开发人员可以方便地构建分布式系统和微服务架构。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值