介绍:最近看了这篇《Envoy Gateway 来了》,深深感受到了Envoy强大的可扩展性和基于EnvoyGateway的易用性。在K8s架构下,Envoy重新定义了网关的定位和能力,被称为云原生网关,甚至是下一代网关。早在2018年,阿里巴巴就启动了对下一代网关的探索。本文将简要介绍这一探索过程。作者:耿磊磊(如风):阿里云研发工程师,2020年5月至3.0上线期间负责EnvoyGateway的建设。作为技术负责人,主导了整个演进过程,在云原生网关领域有着丰富的实践。最近看了这篇《Envoy Gateway 来了》,深刻感受到了Envoy强大的可扩展性和基于EnvoyGateway的易用性。在K8s架构下,Envoy重新定义了网关的定位和能力,被誉为云原生网关。它甚至被称为下一代网关。早在2018年,阿里巴巴就启动了对下一代网关的探索。本文将简要介绍这一探索过程。早在2018年,阿里巴巴就拉开了云原生上云的序幕,将容器和服务网格作为核心技术点进行演进,并试图通过这次技术演进统一双方的中间件技术栈,让业务更专注于业务发展,屏蔽底层分布式复杂性。作为ServiceMesh的一个重要方向,我们已经开始了对下一代网关的探索。EnvoyGateway1.0(孵化期)上云过程中,我们期望统一应用架构技术栈,但蚂蚁和阿里巴巴的RPC协议不同,互调链路长,协议转换消耗大,有损接入TengineReload(access如果生效快,需要不断reload损坏,如果控制reload的影响,必须减少reload次数,access服务生效慢),Nginxkernel服务治理能力薄弱。因此,需要面向未来的网关解决方案。当时,我们对技术演进有两种想法。一是基于Tengine做优化,二是基于Envoy内核扩展网关场景。考虑到Tengine针对这些场景的解决方案结构变化太多,Envoy作为网关的第二选择,可以轻松解决问题。以上痛点,因此,我们选择了Envoycore作为下一代网关的演进方向,并且从CNCFIngressProvider的统计来看,Envoy也是增长速度最快,被社区接受度最高的。2020年5月,我们启动了EnvoyGateway1.0的研发。同年,成功支持双11大促,成为核心再保险的业务纽带。image.gifEnvoyGateway1.0主要用于东西向流量的RPC互通。其架构部署如下图所示:在此期间,我们在未来演进了Dubbo3.0Triple协议。我们在Envoy的基础上,演进了网关的服务管理能力,以支撑今年双十一本地生活的流量峰值达到了几十万TPS。EnvoyGateway2.0(成长期)随着阿里巴巴上云运动的推进,越来越多的场景来到我们面前,比如云对云的业务互通。由于Tengine的服务管理薄弱,需要汇聚阿里巴巴大量的二层微服务网关,所以从业务的角度,我们需要做Tengine+Envoy二层网关的演进,以及承接南北门户交通。2020年12月,我们开始了2.0架构的演进。下面以优酷场景为例来说明其演进过程。以及微服务治理的需求,与Tengine流量网关的集成已经完成。在这个过程中,我们提升了服务治理和高可用能力,支持优酷内部多个二层微服务网关的统一,大大提升了性能和运维效率。在2.0阶段,EnvoyGateway已经完成了东西向和南北向全球流量的调度和分发。东西方向不仅支持跨业务域的AntRPC互通,还扩展到混合云云内外RPC互通场景,包括钉钉文档、阿里视频云、达摩院点小米、智能数字人等.,2.0阶段的业务大图如下(云对云互通场景,以钉钉为例):随着EnvoyGateway业务的快速上线,在与优酷持续合作的过程中,大家提出了一个问题:TengineGateway(承担流量网关的角色)+EnvoyGateway(承担微服务网关的角色)的二层网关能否合并使用EnvoyGateway?答案是肯定的,我们也合作设计了一个新的架构图,如下:这个方案的演进让我们看到了网关新的发展趋势,尤其是在K8s主导的容器化背景下,自然网络K8s集群隔离,用户还需要一个兼顾高性能和安全性的入口网关,以及强大的服务治理能力,这也为我们走向3.0提供了良好的积累。EnvoyGateway3.0(成熟期)随着阿里巴巴大量场景的打磨,EnvoyGateway的性能和稳定性得到了很好的发展。2021年阿里巴巴发起了中间件三位一体的运动,用云产品来支撑集团的业务,所以我们也会通过MSE云原生网关孵化成熟的技术来服务集团。此时,我们在通过Envoy将流量网关+微服务网关合二为一的同时,也通过硬件加速、内核优化等手段,在不影响性能的前提下,不断优化网关的资源部署成本。技术架构决定技术优势。Envoy天然的可扩展性还可以集成丰富的安全认证和微服务治理能力,体现了云原生网关高聚合的优势。IP、RT更低支持HTTPS硬件加速,QPS提升80%支持Wasm插件市场,插件热加载,满足多语言自定义插件需求自研Multi-IngressController组件支持多-集群Ingress复用同一个网关实例原生兼容K8sIngress规范,支持NginxIngress核心功能注解无缝转换回馈社区在EnvoyGateway的演进过程中,我们也提出了很多社区问题,包括:dubbo_proxy,wasm,cryptomb等。未来,我们将继续回馈社区,做出更多贡献,与社区一起打造下一代网关。原文链接本文为阿里云原创内容,未经许可不得转载。
