一、grpc是什么
gRPC 一开始由 Google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。基于http/2,采用protocol buf传递信息
二、grpc的优势
- Simple service definition (定义服务简单)
Define your service using Protocol Buffers, a powerful binary serialization toolset and language
- Works across languages and platforms (可以用在各种语言和平台上)
Automatically generate idiomatic client and server stubs for your service in a variety of languages and platforms
- Start quickly and scale (快速上手和可扩展)
Install runtime and dev environments with a single line and also scale to millions of RPCs per second with the framework
- Bi-directional streaming and integrated auth (双向流和集成身份验证)
Bi-directional streaming and fully integrated pluggable authentication with http/2 based transport
三、grpc支持的语言
- C++
- C#
- Go
- java
- Android Java
- Nodejs
- Objective-C
- PHP
- Python
- Ruby
四、grpc处理过程
gRPC 一开始由 Google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。
五、grpc开发流程
- Defining the service (定义服务)
- Generating client and server code (生成客户端和服务端代码)
- Creating the server
- Creating the client
六、Protocol-buf
1) 什么是protocol
- Protocol Buffers 是google提供的一种轻便高效的结构化数据存储格式,可以用于结构化数据序列化,很适合做数据存储或 RPC 数据交换格式。它可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
2)protocol-buffer 数据类型
七、Grpc API类型
gRPC 中的 Service API 有如下4种类型:
- UnaryAPI:普通一元方法
- ServerStreaming:服务端推送流
- ClientStreaming:客户端推送流
- BidirectionalStreaming:双向推送流
1) UnaryAPI
unaryAPI为比较简单的API类型,调用时,传递一次参数,参数返回一次
unaryAPI Server端
unaryAPI Client端
2) ServerStream
ServerStream Server端
ServerStream Client端
3) BidirectionalStream
Bidirectional Server端
Bidirectional Client端
八、Grpc 安装
- Protocol buffer安装
九、Protocol buffer 编译
这里以编译为go语言为例
protoc --go_out=. --go-grpc_out=. example.proto
编译后,输出一个go packae ,包括两个go文件,以上述的agent.proto文件为例,编译后生成一下两个文件