初识gRPC

12 篇文章 0 订阅

初识gRPC

1、认识RPC

RPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议。RPC协议构建于TCP或UDP,或者是HTTP。允许开发者直接调用另一台服务器上的程序,而开发者无需另外的为这个调用过程编写网络通信相关代码,使得开发网络分布式程序在内的应用程序更加容易。

RPC采用客户端/服务器端的工作模式,请求服务即客户端,服务提供者即是服务器端。当执行一个远程过程调用时,客户端程序首先先发送一个带有参数的调用信息到服务端,然后等待服务端响应。在服务端,服务进程保持睡眠状态直到客户端的调用信息到达。当一个调用信息到达时,服务端获得进程参数,计算出结果,并向客户端发送应答信息。然后等待下一个调用。

在这里插入图片描述

并非狭义的客户端和服务器端,只要发送带有请求的调用信息就是客户端,而能够处理来自客户端的请求信息的就是服务器端。

rpc不是框架,是一种思想。

通常在一次RPC调用会有三个特点:

  • 约定好调用的语义(接口语法)
  • 约定好网络传输的内容的格式
  • 网络传输

RESTful就是目前比较常用的实现了RPC的架构风格,RESTful依靠HTTP/1.1和JSON来进行传输。

2、认识gRPC

gRPC是一个开源的、高性能的RPC框架。最初由google开发,现在是CNCF的一部分。其网络数据传输默认采用的是Google的Protobuf,并且使用HTTP/2。

3、gRPC工作流程

gRPC要求client存放一个stub(存根:提供与服务器相同的方法和功能),stub由gRPC框架自动生成。有了stub后,开发人员只需要关心具体的业务逻辑,而不需要关心网络通信相关实现原理。

在这里插入图片描述

client的stub是由protoc生成的,可以利用插件快速将proto文件生成gRPC需要的stub

4、gRPC的四种类型

  • unary(一元)

    客户端发送1个单一请求,服务端回复1个单一响应,和普通的HTTP API类似。

  • client streaming(客户端流)

    客户端发送多个消息流,并且期望服务端回复1个单一响应。

  • server streaming(服务端流)

    客户端仅发送1个单一请求,服务端回复多个消息流。

  • bidirectional streaming(双向流)

    客户端和服务端平行地发送和接受多条消息,并以任意顺序,非常灵活且无阻塞。

5、gRPC和REST的区别

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值