Apache APISIX 的稳定性与容错性

更新时间 1/20/2024

在调研 API Gateway 选型时,除了 API Gateway 提供的功能、可扩展性、安全能力之外,自身的稳定性与容错性也是必须考虑的地方。早在 2019 年 Apache APISIX 的设计中,稳定性和容错性被视为至关重要的因素,因为在处理企业内外流量请求的代理与管理方面,任何失效都可能导致重大生产事故。

因此,通过如下对 Apache APISIX 的关键稳定性和容错性特点的说明,以便让调研人员能有更加全面的理解。

分离的控制面与数据面

Apache APISIX 采用了分离的控制面(即 etcd、Admin API)和无状态的数据面(即 API Gateway 自身可按需任意扩容)架构,它们之间没有依赖关系。这意味着即使在某种情况下控制面出现异常(如网络中断或控制面异常退出),数据面仍然可以继续正常运行、处理新的流量请求。这种分离架构确保了系统的高可用性。

APISIX's Technical Architecture

数据同步机制

数据面与控制面之间采用了高效的数据同步机制。数据面充当 etcd Watcher,当 etcd 内的数据发生变化时,etcd 会主动通知到数据面变更的情况、数据面将更新自身配置与规则。因此,当管理员通过 Admin API 将配置写入 etcd 后,数据面能够快速接收到变更通知并将配置存储在内存中。这种机制避免了每次请求到达数据面时都需要从 etcd 获取配置,从而降低了系统的负载。但需要注意:当出现控制面异常行为时,应避免重启数据面实例,否则会导致数据面内存中的配置丢失。

控制面异常情况

网络通信中断

当 API Gateway 与 etcd 之间发生网络中断时,管理员通过 Admin API 写入 etcd 的配置将无法传达到 Gateway。然而,Gateway将继续使用之前保存在内存中的配置来处理新的流量请求,从而避免了因与 etcd 失去连接而导致的异常退出。一旦 Gateway 与 etcd 的连接恢复,Gateway 将接收到最新的配置并继续正常工作。

etcd 异常崩溃

当 etcd 异常崩溃退出后,管理员将无法通过 Admin API 写入配置,但这并不会影响 Gateway 的运行。Gateway 将继续工作,并处理流量请求。这种情况下,Gateway 的表现与网络中断后的情况相似。

多节点部署与负载均衡

为了确保高可用性,通常我们会建议部署多个 Gateway 实例,并在它们之前设置负载均衡器(如 AWS Load Balancer 或 F5)。这些负载均衡器具备健康检查机制,能够判断 Gateway 实例的健康状态。一旦某个 Gateway 实例失效,负载均衡器会及时将其从服务中剔除,并可以添加新的 Gateway 节点。这种多节点部署和负载均衡策略有助于防止因单一节点故障而导致的业务中断。

总结

总体来说,Apache APISIX 在控制面和数据面断开连接时,展现出了出色的稳定性和容错性。其分离架构、高效的数据同步机制以及多节点部署策略,使得即使在异常情况下,系统仍能够保持高可用性,确保企业的 API 服务持续稳定运行。同时,Apache APISIX 的设计考虑到了各种网络和组件异常情况,使其在处理企业级流量请求时表现出色。

微信咨询

获取方案