软件技术学习笔记

个人博客,记录软件技术与程序员的点点滴滴。

Golang服务常用组件—Gin, JSON, GraphQL, gRPC

给前端使用的服务接口,一般采用JSONGraphQL格式。微服务间的服务接口,一般采用JSON或gRPC格式。

Gin是一个非常流行的HTTP服务框架,在GitHub上的Stars已有32k。在提供JSON或GraphQL格式的服务接口时,Gin是一个非常明智的选择。在提供gRPC格式的服务接口时,使用官方的工具protoc-gen-go自动生成代码也比较便捷。

格式 优点 缺点 选择时考虑点
JSON 最通用;数据自描述 数组时冗余数据大;序列化效率不高 不需要schema,能自动识别属性与数据;JSON序列化不是性能问题点
GraphQL 一次请求获取所需的、最少的所有数据;自带输入数据校验 本身也是JSON格式,且更高层次的封装,性能比单纯的JSON略差 前端使用,想提高网络访问性能;服务聚合
gRPC 高效的序列化,字节流最小 需要schema才能解析数据的含义;不通用 使用JSON格式时,网络传输与序列化出现性能问题时,就该换到gRPC
继续阅读→