🚀🚀🚀本篇主要内容
gRPC
* 简介
* HTTP/2协议
* gRPC的接口类型
* Protocol Buffers
* 服务器与客户端案例编写
Protocol Buffers
Protocol Buffers 是一种与语言无关,平台无关的可扩展机制,用于序列化结构化数据。使用Protocol Buffers 可以一次定义结构化的数据,然后可以使用特殊生成的源代码轻松地在各种数据流中使用各种语言编写和读取结构化数据。
现在有许多框架等在使用Protocol Buffers。gRPC也是基于Protocol Buffers。 Protocol Buffers 目前有2和3两个版本号。
在gRPC中推荐使用proto3版本。
1 文档结构
1) Protocol Buffers版本
Protocol Buffers文档的第一行非注释行,为版本申明,不填写的话默认为版本2。
syntax = "proto3";
或者
syntax = "proto2";
2)Package包
Protocol Buffers 可以声明package,来防止命名冲突。 Packages是可选的。
package foo.bar;
message Open { ... }
使用的时候,也要加上命名空间,
message Foo {
...
foo.bar.Open open = 1;
...
}
**注意:对于Py
2 注释
Protocol Buffers 提供以下两种注释方式。
// 单行注释
/* 多行注释 */
3 数据类型
3.1 基本数据类型
| .proto | 说明 | Python |
|---|---|---|
| double | float | |
| float | float | |
| int32 | 使用变长编码,对负数编码效率低, 如果你的变量可能是负数,可以使用sint32 | int |
| int64 | 使用变长编码,对负数编码效率低,如果你的变量可能是负数,可以使用sint64 | int/long |
| uint32 | 使用变长编码 | int/long |
| uint64 | 使用变长编码 | int/long |
| sint32 | 使用变长编码,带符号的int类型,对负数编码比int32高效 | int |
| sint64 | 使用变长编码,带符号的int类型,对负数编码比int64高效 | int/long |
| fixed32 | 4字节编码, 如果变量经常大于2^{28} 的话,会比u |