gRPC学习

grpc的概述

grpc可以使用**protocol buffers(简单应用可以参考上一篇文章)**作为接口定义语言(IDL)和底层消息交换格式。
优点

使用GRPC,我们可以在A.Pro文件中定义我们的服务,并实现任何GRPC支持的语言中的客户端和服务器,这可以在从谷歌内部服务器到您自己的平板电脑的环境中运行——所有的语言和环境之间的通信的复杂性都由GRPC处理。我们还获得了使用协议缓冲区的所有优点,包括高效的序列化、简单的IDL和简单的接口更新。

概览

在gRPC中,客户机应用程序可以直接调用另一台计算机上的服务器应用程序上的方法,就好像它是本地对象一样,这使您更容易创建分布式应用程序和服务。与许多RPC系统一样,gRPC基于定义服务的思想,指定可以使用其参数和返回类型远程调用的方法。在服务器端,服务器实现这个接口并运行gRPC服务器来处理客户端调用。在客户端,客户端有一个存根(在某些语言中称为客户端),它提供与服务器相同的方法
调用实例:
在这里插入图片描述
gRPC客户机和服务器可以在各种环境中运行并相互通信—从谷歌内部的服务器到您自己的桌面—并且可以用gRPC支持的任何语言编写。因此,例如,您可以很容易地用Java创建gRPC服务器,用Go、Python或Ruby创建客户机。此外,最新的googleapi将有gRPC版本的接口,使您可以轻松地将Google功能构建到您的应用程序中。

RPC调用的生命周期
最简单的一元调用:

  1. 一旦client调用了rpc方法在客户端的存根,就会通知服务器,已使用此调用的客户机元数据、方法名和指定的截止日期(如果适用)调用了RPC。
  2. 然后,服务器可以直接发送回它自己的初始元数据(必须在任何响应之前发送),或者等待客户机的请求消息(首先发生的是特定于应用程序的消息)
  3. 一旦服务器收到客户机的请求消息,它就会执行创建和填充其响应所需的任何工作。然后将响应(如果成功)连同状态详细信息(状态代码和可选状态消息)和可选的尾部元数据返回给客户端。
  4. 如果状态为OK,则客户端将获得响应,从而在客户端完成调用。

gRPC vs. Restful API
作用:都用于server/client模型通信,都是用http作为的层的传输协议(grpc使用http2.0,restful api不一定)
不同:
1.grpc可以通过protobuf来定义接口,从而可以有更加严格的接口约束条件
2.通过protobuf可以将数据序列华为二进制编码,这会大幅减少需要传输的数据量,从而大幅提高性能。
3.gRPC可以方便的支持流式通信

参考页面:
https://www.grpc.io/docs/guides/
https://www.grpc.io/docs/tutorials/basic/go/
https://www.jianshu.com/p/9c947d98e192

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值