🚀🚀🚀本篇主要內容
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 |