gRPC

五十岚2020年12月6日
大约 2 分钟

目前比较主流,基于 Golang 开发的 gRPC

gRPC

1. 部分文档

1.1 论文

graphicsopen in new window

1.2 服务配置

Service Config in gRPCopen in new windowarg_keysopen in new window

1.3 重试策略

what is xDSopen in new window

1.4 开源引用

aioetcd3: 版本较老,非 asyncio 是基于线程实现的库

1.5 Python 文档

gRPC Python’s documentationopen in new windowAPI 是稳定

grpc (github.com)open in new window 需要 python >= 3.6

官方文档中文版open in new window

1.6 proto3

protocol buffersopen in new window

proto3JSONJSON示例注意
messageobject产生JSON对象,消息字段名可以被映射成lowerCamelCase形式,并且成为JSON对象键,null被接受并成为对应字段的默认值
enumstring“FOO_BAR”枚举值的名字在proto文件中被指定
mapobject所有的键都被转换成string
repeated Varray[v, …]null被视为空列表
booltrue, falsetrue, false
stringstring“Hello World!”
bytesbase64 string“YWJjMTIzIT8kKiYoKSctPUB+”
int32, fixed32, uint32number1, -10, 0JSON值会是一个十进制数,数值型或者string类型都会接受
int64, fixed64, uint64string“1”, “-10”JSON值会是一个十进制数,数值型或者string类型都会接受
float, doublenumber1.1, -10.0, 0, “NaN”, “Infinity”JSON值会是一个数字或者一个指定的字符串如”NaN”,”infinity”或者”-Infinity”,数值型或者字符串都是可接受的,指数符号也可以接受
Anyobject如果一个Any保留一个特上述的JSON映射,则它会转换成一个如下形式:{"@type": xxx, "value": yyy}否则,该值会被转换成一个JSON对象,@type字段会被插入所指定的确定的值
Timestampstring“1972-01-01T10:00:20.021Z”使用RFC 339,其中生成的输出将始终是Z-归一化啊的,并且使用0,3,6或者9位小数
Durationstring“1.000340012s”, “1s”生成的输出总是0,3,6或者9位小数,具体依赖于所需要的精度,接受所有可以转换为纳秒级的精度
Structobject任意的JSON对象,见struct.proto
Wrapper typesvarious types2, “2”, “foo”, true, “true”, null, 0, …包装器在JSON中的表示方式类似于基本类型,但是允许nulll,并且在转换的过程中保留null
FieldMaskstring“f.fooBar,h”见fieldmask.proto
ListValuearray[foo, bar, …]
Valuevalue任意JSON值
NullValuenullJSON null
上次编辑于: 2023/3/8 05:05:29