聊聊什么是gRPC

本文介绍了gRPC的基本概念、通信流程,对比了gRPC与Restful在文档规范、消息编码、传输协议等方面的差异,并探讨了gRPC的适用场景和简单实践,包括proto文件编写、服务端和客户端实现。
摘要由CSDN通过智能技术生成

前言

现如今,微服务变得越来越流行,而服务间的通信也变得越来越重要,服务间通信本质是交换信息,而交换信息的中介/桥梁正是我们的API

诚然,目前构建API最受欢迎的仍然是使用Restful(HTTP-JSON),因为它简单、快速、易懂。

但是在本文中,我们不妨尝试探索使用gRPC来构建我们的API,并在这个过程比较gRPC与Restful两者的异同。

最后,让我们来思考下,一个API应该是怎样的?如果从宏观的角度看,一个API应该是非常简单的,因为它就做了两件事:

  • 1.客户端发送一个请求(Request)
  • 2.服务端接收请求,并返回一个响应(Response)

这种思想在gRPC中也体现得非常明显,而从微观上看,构建一个API,我们可能需要考虑到:

  • 1.我们使用什么数据模型?JSON、XML还是二进制流
  • 2.我们使用什么协议传输?HTTP、TCP、还是HTTP/2
  • 3.我们如何调用方法,以及处理错误
  • 4.我们如何应对数据量大的情况
  • 5.我们如何减少接口的延时等
  • ...

话不多说,让我们进入正题。

什么是gRPC

在聊聊什么是gRPC前,我们先来聊聊什么是RPC。

RPC,全称Remote Procedure Call,中文译为远程过程调用。通俗地讲,使用RPC进行通信,调用远程函数就像调用本地函数一样,RPC底层会做好数据的序列化与传输,从而能使我们更轻松地创建分布式应用和服务。

而gRPC,则是RPC的一种,它是免费且开源的,由谷歌出品。使用gRPC,我们只需要定义好每个API的Request和Response,剩下的gRPC这个框架会帮我们自动搞定。

另外,gRPC的典型特征就是使用protobuf(全称protocol buffers)作为其接口定义语言(Interface Definition Language,缩写IDL),同时底层的消息交换格式也是使用protobuf。

gRPC基本通信流程

这是官方文档的一张图,通过这张图,我们可以大致了解下gRPC的通信流程:

1.gRPC通信的第一步是定义IDL,即我们的接口文档(

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值