Logo
Mar 4, 2023

gRPC Tutorial

简介

gRPC 是来自Google的一个开源RPC框架,速度快,执行率高,基于HTTP/2构建,低延迟, 支持流,与开发语言无关,并且可以简单的插入身份认证、负载均衡、日志和监控等功能。

如何学习gRPC

先学Protocol Buffershttps://developers.google.com/protocol-buffers/,用它来定义消息和服务。

然后,你只需要实现服务即可,剩余的gRPC代码将会自动为你生成。

.proto 文件适用于十几种开发语言(包括服务端和客户端),并且它允许你使用同一个框架来支持每秒百万级以上的RPC调用。

开发模式

gRPC使用的是合约优先的API开发模式,它默认使用Protocol buffers(也叫protobuf)作为接口设计语言(IDL),这个.proto文件包括两部分:

  • gRPC服务的定义

  • 服务端和客户端之间传递的消息

为什么使用Protocol Buffers?

它和开发语言无关

可以生成所有主流开发语言的代码

数据是二进制格式的,串行化的效率高,Payload比较小

也适合传递大量数据

通过设定某些规则,使得API的进化也很简单

学习使用Protocol Buffer

Protocol Buffer

gRPC结构

gRPC生命周期

身份认证

这里指的不是用户的身份认证,而是指多个serverclient之间,它们如何识别出来谁是谁,并 且能安全的进行消息传输。

在身份认证这方面,gRPC一共有4种身份认证的机制:

  • 不采取任何措施的连接,也就是不安全的连接。

  • TLS/SSL连接。

  • 基于Google Token的身份认证。

  • 自定义的身份认证提供商。

消息传输类型

gRPC的消息传输类型有4种:

  • 第一种是一元的消息,就是简单的请求-响应
  • 第二种是server streaming (流),server 会把数据streaming回给client。
  • 第三种是client streaming, 也就是client会把数据streaming给server。
  • 最后是双向streaming。

消息类型

gRPC使用Protocol Buffer作为传输协议的时候,Protocol Buffer里所有的规则仍然都适用。

但是在gRPC使用Protocol Buffer的时候,会添加一些额外的规则和语法,以便让gRPC能和它完美配合。

生成gRPC代码

$ protoc --go_out=. --go-grpc_out=. *.proto

gRPC Demo

gRPC Demo

参考

plugins are not supported : grpc

gRPC in C#*2/Go/C++


gRPC

938 Words

2023-03-04 13:53