知识卡片

网关地址的唯一性决定它的可用性只能靠轻量化与前置设施来兜底

普通读书笔记卡

内容

[[注册中心因系统地位特殊而同时需要高可用与高可靠]]可以靠集群化多节点来 换取高可用,但网关面临的约束不同:用户只通过唯一的地址访问系统,这个 唯一性是网关天然的单点属性,无法像注册中心那样简单粗暴地”部署多节点、 靠共识算法同步”来解决——因为客户端认的就是那一个入口地址。这决定了 提升网关可用性只能走另外几条路:网关本身应尽可能轻量,虽然网关天然 适合顺手实现安全、认证、限流、监控等功能,但每加一项都是在用可用性 换功能性,必须仔细权衡,过度堆功能对承担着全局单点角色的组件是危险的; 选型上应优先选经过长期生产考验的成熟产品(如Nginx Ingress Controller、 KONG、Zuul),而不是一味追新求性能最优——性能与可用性同样需要权衡; 在真正要求高可用的生产环境里,还应该在网关前面再放一层负载均衡器或 等价路由器(往往是更成熟健壮的硬件设备)作为真正的系统入口,让网关本身 可以在其后方做水平扩展,把”唯一入口”这个角色转移给更擅长扛这个角色的 基础设施。

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第7章"从类库到服务" 7.2.1节"网关的职责"(源文件:_epub-src对应OEBPS/Text/chapter89.xhtml) - 结论依据:原文说明网关地址的唯一性使其天然是单点,不能像服务发现的 注册中心那样用集群方式解决,进而给出网关应轻量化、选型偏成熟产品、 在其前置负载均衡器/等价路由器三条应对建议,直接支撑本卡片结论。 - 原始内容:由于网关的地址具有唯一性,所以不能像之前服务发现那些注册 中心那样,用集群的方式解决问题……在需要高可用的生产环境中,应当考虑 在网关之前部署负载均衡器或者等价路由器,让那些更成熟健壮的设施去 充当整个系统的入口地址。