阿里云公共dns是什么

为了清晰阐述不同网关的差异,我们先对一些关键概念进行界定:
传统网关主要是指未经容器化改造、未采用K8s技术的网关,它们通常通过流量网关和业务网关两层结构来构建。其中,流量网关提供全局性的、与后端业务无关的策略配置,例如Tengine便是典型的流量网关;而业务网关则提供独立业务域级别的、与后端业务紧密耦合的策略配置。随着应用架构从单体应用演变到现在的分布式微服务,业务网关也有了新的称呼——微服务网关。
而K8s网关,也被称为云原生网关或下一代网关。在K8s生态中,Ingress成为了网关的标准,促使流量网关和业务网关合二为一。基于Ingress规范的实现主要分为基于Nginx和基于Envoy两大阵营。其中,Nginx Ingress Controller是大多数K8s集群的首选,而基于Envoy的实现则展现出强大的赶超势头。
MSE云原生网关则是基于Envoy进行深度优化,专门服务于云上环境的网关。
本文将从性能与成本、可靠性、安全性三个方面对Nginx Ingress Controller和MSE云原生网关这两大开源实现进行对比,希望能为正在进行K8s网关选型的企业提供参考。
性能和成本方面:
MSE云原生网关的吞吐性能几乎达到Nginx Ingress Controller的一倍,尤其是在传输小文本时,性能优势更为明显。当CPU使用率升高时,两者的吞吐差距会更加显著。而且,MSE云原生网关使用了CPU的SIMD技术实现了TLS加解密算法的硬件加速,有效降低了TLS握手时延,提高了极限QPS。使用MSE云原生网关,只需一半的资源就能达到Nginx Ingress Controller的吞吐性能,在硬件加速优化的HTTPS场景下,吞吐还能进一步提升。
可靠性方面:
在高负载下,Nginx Ingress Controller会出现pod重启的问题,导致吞吐下降。这是因为其存活健康检查(livenessProbe)在高负载时容易超时失败,而且开启prometheus采集监控指标的情况下会出现OOM问题。这些问题本质上是由于Nginx Ingress Controller的部署架构不合理导致的。而MSE云原生网关采用了数据面和控制面隔离的架构,具有更高的可靠性。MSE云原生网关还提供了纯托管的模式,避免了与业务容器混跑在一个ECS节点上,提高了网关的可用性。
安全性方面:
Nginx Ingress Controller的不同版本存在一些CVE漏洞隐患。而迁移到MSE云原生网关后,将一次性解决这些CVE漏洞隐患,并提供平滑升级方案,确保升级过程对业务影响最小化。MSE云原生网关还内置了阿里云Web应用防火墙(WAF),提供细粒度路由级防护,使用成本更低。
MSE云原生网关在性能、可靠性和安全性方面相比Nginx Ingress Controller具有明显优势。它还提供了平滑迁移方案,通过DNS权重配置实现业务流量的平滑迁移,对后端业务完全无感知。
本文为阿里云原创内容,未经允许不得转载。
