微服务设计 API

良好的 API 设计在微服务体系结构中非常重要,因为服务之间的所有数据交换都是通过消息或 API 调用进行的。API 必须高效,以避免创建喋喋不休的 I/O。由于服务是由独立工作的团队设计的,因此 API 必须具有明确定义的语义和版本控制方案,以便更新不会破坏其他服务。


区分两种类型的 API 非常重要:

  • 客户端应用程序调用的公共 API。
  • 用于服务间通信的后端 API。

这两个用例的要求略有不同。公共 API 必须与客户端应用程序(通常是浏览器应用程序或本机移动应用程序)兼容。大多数情况下,这意味着公共 API 将通过 HTTP 使用 REST。但是,对于后端 API,您需要考虑网络性能。根据服务的粒度,服务间通信可能会导致大量网络流量。服务可能很快就会受到 I/O 限制。因此,序列化速度和有效负载大小等注意事项变得更加重要。通过HTTP使用REST的一些流行的替代方案包括gRPC,阿帕奇阿夫罗和阿帕奇节俭。这些协议支持二进制序列化,通常比 HTTP 更有效。

考虑

以下是在选择如何实现 API 时需要考虑的一些事项。

Rest与RPC。考虑使用 REST 样式的接口与 RPC 样式的接口之间的权衡。

  • REST 模型资源,这可能是表达域模型的自然方式。它定义了一个基于HTTP动词的统一接口,这鼓励了可进化性。它在幂等性,副作用和响应代码方面具有明确定义的语义。它强制实施无状态通信,从而提高了可伸缩性。