Golang服务常用组件—Gin, JSON, GraphQL, gRPC
给前端使用的服务接口,一般采用JSON或GraphQL格式。微服务间的服务接口,一般采用JSON或gRPC格式。
Gin是一个非常流行的HTTP服务框架,在GitHub上的Stars已有32k。在提供JSON或GraphQL格式的服务接口时,Gin是一个非常明智的选择。在提供gRPC格式的服务接口时,使用官方的工具protoc-gen-go
自动生成代码也比较便捷。
格式 | 优点 | 缺点 | 选择时考虑点 |
---|---|---|---|
JSON | 最通用;数据自描述 | 数组时冗余数据大;序列化效率不高 | 不需要schema,能自动识别属性与数据;JSON序列化不是性能问题点 |
GraphQL | 一次请求获取所需的、最少的所有数据;自带输入数据校验 | 本身也是JSON格式,且更高层次的封装,性能比单纯的JSON略差 | 前端使用,想提高网络访问性能;服务聚合 |
gRPC | 高效的序列化,字节流最小 | 需要schema才能解析数据的含义;不通用 | 使用JSON格式时,网络传输与序列化出现性能问题时,就该换到gRPC |