Architecture Decision Record

Active theme: Light

← 决策记录例子

架构决策记录:API 用 JSON 还是 gRPC

状态

已接受

背景

阿拉辣为一个新服务设计 API,会有多个客户端使用。阿拉一直辣考虑实现 API 个两种选择:用 HTTP 上个 JSON,或者用 gRPC。

HTTP 上个 JSON 是构建 API 广泛使用个办法,许多编程语言搭框架侪支持。迭个办法简单、轻量、容易理解,对许多项目来讲是个好选择。勿过,伊可能勿如其他选项高效,尤其是处理大量数据个辰光。

gRPC 呢,是一种比较新个技术,提供更加高效个构建 API 个办法。伊用二进制序列化来传输数据,可以比 JSON 更加快、更加紧凑。gRPC 还支持双向流,是实时应用个好选择。

决策

考虑了两个选项个利弊之后,阿拉决定 API 用 gRPC。虽然 HTTP 上个 JSON 是更加简单个选项,勿过阿拉相信 gRPC 会为阿拉个服务提供更加高效、更加可扩展个解决方案。阿拉还预计阿拉个 API 要处理大量数据,gRPC 个二进制序列化对迭种用法会更加高效。

另外,阿拉相信 gRPC 对双向流个支持,对阿拉以后可能开发个实时应用会有好处。

后果

选了 gRPC,阿拉构建 API 就需要用一套搭 HTTP 上个 JSON 勿同个工具搭库。迭可能需要额外个辰光搭精力来学习搭实现迭眼技术。另外,想用阿拉 API 个客户端需要用兼容 gRPC 个库,迭眼库个支持可能勿如 HTTP 上个 JSON 库那能广泛。

勿过,阿拉相信用 gRPC 个好处超过迭眼潜在个缺点,阿拉有信心迭个决策会带来更加高效、更加可扩展个 API。