【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

Envoy Gateway 会成为网关现有格局的冲击者吗?| 专访 Envoy 创始人

  • 2022-11-03
    北京
  • 本文字数:4474 字

    阅读完需:约 15 分钟

Envoy Gateway会成为网关现有格局的冲击者吗?| 专访Envoy创始人

新开源的 Envoy Gateway 项目,能让 Envoy 变得更平易近人吗?

 

2022 年 5 月份,新项目Envoy Gateway正式开源。这是 Envoy 家族的一项新计划,背后汇集了一组基于 Envoy 的流行 Ingress 提供商,包括 VMware(由 Contour 维护者代表)、Tetrate(领先的 Istio 贡献者)和AmbassadorEmissary 的维护者),共同构建 Kubernetes 网关 API 参考实现。Envoy Gateway 旨在通过开发一个统一的、规范的实现来修复基于 Envoy 的 Ingress 控制器的碎片化问题,该实现将托管在Project Envoy下。

 

Envoy Gateway 希望给 Envoy 生态带来什么变化?Envoy 上手难度高的问题有解吗?Envoy 未来更长远的目标是什么?带着这些问题,InfoQ 采访了 Envoy 创始人 Matt Klein,我们也围绕 Envoy 的核心设计理念和运作模式做了一些探讨。

 

Envoy 项目有一点不同于大部分开源项目,它没有常规意义上的发展路线图、完全由社区驱动,不属于任何单个商业实体,也不存在任何对应的商业版本。这一点吸引了大量寻求技术中立性的潜在用户,但同时也难免让人心生疑问,这会不会导致 Envoy 项目发展缺少强有力的引导或不够稳定?虽然据 Matt 介绍,Envoy 生态已经相当繁荣,但我们也看到,目前采用 Envoy 的主要还是大型企业,在打造网关的实践中选型 Envoy 的国内企业仍属于小众。

 

本文出自 InfoQ 特别策划的专题《Envoy 当道?云原生时代的下一代网关选型和实践》,希望能帮助你更好地理解 Envoy 和 Envoy Gateway。

 

00:00 / 00:00
    1.0x
    • 2.0x
    • 1.5x
    • 1.25x
    • 1.0x
    • 0.75x
    • 0.5x
    网页全屏
    全屏
    00:00


    Envoy 的目标不是打造最易用的解决方案

     

    从技术角度来看,Envoy 社区长久以来想做的就是开发一款工具,让它作为不同类型架构和系统的构建基础。在 Matt 看来,Envoy 的核心技术理念实际上是围绕可扩展性展开的。社区所做的一切都是为了让系统更具可扩展性,比如尽可能提供健壮且定义明确的 API、清晰的说明文档等。开源项目本身提供大量开箱即用的功能,同时也会保留扩展能力以支持部分用户满足他们的特定使用场景需求,即使大部分人可能用不上。这样一来,人们可以根据自己的需求,通过不同方式对 Envoy 做出扩展,很多扩展场景都超出了社区的意料,也让 Envoy 取得了超出预期的成功。

     

    Envoy 的目标并不是打造一套最易用的解决方案,而是想为人们提供可以构成不同解决方案的构建单元,借此对接服务网格、边缘负载均衡、内部负载均衡等各类使用场景

     

    实际上,Envoy 从来不是一个很容易上手的软件。Matt 坦言,很多人会觉得 Envoy 很复杂、很难理解、配置太多,这些说法都没错,但他更认为,纵观整个行业,没有哪种无需配置的简单工具能够同时满足多种不同使用场景的需求。Envoy 的目标是帮助他人解决自己的问题,而不是让所有人都满意。

     

    在 Matt 看来,Envoy 不可能适用于所有场景,也不可能适合每一位开发者。因此社区才会围绕 Envoy 建立起丰富的产品组合和初创项目生态系统,并把这一切都分层置于顶部。就如同瑞士军刀式工具,人们可以在它之上构建起更多不同解决方案。

     

    新开源的 Envoy Gateway 项目,已经代表着社区的明确态度:大家正在想办法解决 Envoy 上手难的问题。但这个解法不是改变 Envoy,而是以 Envoy 为基础再做一些分层,用这种方式降低使用门槛,让人们能够轻松上手

     

    Envoy Gateway 项目的真正意义就在于,可以在 Envoy 之上构建起简化层,用以满足某些更简单的使用场景需求,比如降低在 API Gateway(又称“南北向网关”)场景使用 Envoy 的门槛。Envoy Gateway 为此提供了一个更简易的入门解决方案,能够让用户更快速、更轻松地用上 Envoy。在用户用上 Envoy Gateway 之后,可能就不需要其他东西了;但也有一种可能是未来用户的需求发生变化,而 Envoy Gateway 无法满足他们更进一步的需求,这时候用户可能需要更复杂的 Envoy 功能集,而整个 Envoy 项目生态系统都将能为他们所用,用户可以回过头去尝试使用原始的 Envoy、去使用更加强大的 XDS API。而这才是 Envoy 社区实现进一步推广项目、扩大受众这一目标的思路。

     

    完全由社区驱动、没有明确的 Roadmap

     

    遵循着将 Envoy 打造成“构建单元”的核心理念,自 2016 年开源以来,Envoy 社区一直在不断产出新功能。刚开源时 Envoy 的核心功能,如今只是所有功能集中的一小部分。不过在 Matt 看来,Envoy 项目的关键里程碑主要体现在社区整体的发展成熟和项目的广泛延伸,而不会落在特定某项功能上。

     

    如今 Envoy 已经七岁了,不再属于初创项目,甚至可以说已经“步入中年”,就像成熟产品一样,Envoy 项目的发展脚步也开始放慢。现在 Envoy 已经积累起太多用户,不能变得太快、不能颠覆得太快,否则大家会不高兴的。

     

    对于 Envoy 未来的发展,Matt 表示很难明确定义出一份发展路线图(Roadmap),核心还是坚持为云原生架构提供构件单元。他倒是很想拿出一份神奇的功能清单,但确实没有。这一点也是 Envoy 区别于其他大部分开源项目的特殊之处。

     

    Envoy 没有一套常规意义上的发展路线图,它是一个真正由社区驱动的开源项目,背后没有一家公司在推动、没有需要达成的产品目标,也没有产品经理和路线图的引导。Envoy 项目由所有参与者共同推动,唯一的目标就是让它能够满足最终用户——那些在 Envoy 之上构建产品的公司们的需求。Envoy 所实现的功能,一定是那些公司所关心的功能。

     


    Envoy官网上展示的基于 Envoy 的开源项目和商业化产品

     

    Envoy 社区完全开放,不存在对应的商业版本,所以用户不用担心部分高级功能会被锁死在商业版当中。同时,Envoy 不属于任何单个商业实体,虽然 Envoy 最初诞生于 Lyft,但 Lyft 并不直接靠 Envoy 赚钱,并将 Envoy 捐赠给了 CNCF。

     

    早在 2017 年,也就是 Envoy 刚刚开源一年的时候,Matt 就发文公开表示,自己不会创办 Envoy 平台公司,并对原因做了非常详细的解释。其中比较核心的一点是,在 Matt 看来,与 Docker、Kubernetes、Mesos、NGINX 等类似,“服务网格”Envoy 不容易转化为 SaaS 产品。如果要提供即开即用的“服务网格”Envoy 解决方案,本质上相当于要提供完整的 PaaS 产品,包括编排和部署的支持,而这等同于直接与主要云提供商竞争。如果不提供完整的 PaaS 产品,那最终业务可能是围绕现有的 PaaS 解决方案提供服务和支持(打包、工具、可观测性等)。无论哪种方式,都不会是一条好走的路,并且这些业务模式也并非 Matt 兴趣所在。

     

    事实上,Envoy 背后没有商业实体这一事实对许多潜在用户来说极具吸引力(尽管肯定不是全部),因为这让 Envoy 社区能做出不受企业利益影响的技术优先决策。

     

    Envoy Gateway 项目的开源也是社区自发推动、顺理成章的结果。正如 Matt 在推特上分享的,“它的诞生并非自上而下的设计,而是自下而上的推动。”

     


    由于 Envoy 的使用确实需要一定的技术积累,直到现在依然有不少用户在选择 Kubernetes Ingress 或者其他类型 Ingress 时,还会寻求其他技术。大家要么被迫寻找一家供应商来提供解决方案,要么就得投入大量时间精力深入学习 Envoy。正因为如此,市面上出现了一些相互竞争的 Ingress 解决方案。比如说 Emissary Ambassador,比如说 Contour,还有很多独立的 Ingress 选项。但 Matt 认为,这些项目的开发者之间其实达成了一种共识,就是只要能够以 Envoy 之名把 Ingress 解决方案统一起来,就能真正吸引到人们的支持和使用。

     

    这更多是一个水到渠成的结果,只要能让更多人选择使用 Envoy,供应商自然就会加入进来,然后建立起更高层级的增值解决方案。于是社区积极出动,与不同供应商广泛讨论,大家逐渐意识到参与进来的好处,最终有了 Envoy Gateway 的诞生。

     

    Envoy Gateway 开源后在国内也引起了很多开发者的关注,其中有一个问题是大家关注的焦点:为什么 Envoy Gateway 不首选 Istio 而是新建控制面?以后是否会支持 Istio 一键迁移?

     

    对此,Matt 回应称目前相关讨论和工作还在进行当中,暂时无法给出明确的答案。他本人其实并不反对使用 Istio 作为控制平面,但 Istio 是一款非常复杂的软件,Istio 社区可能也在想办法做简化。“有一点是可以肯定的,我们没法让每个人都开心,有些人用过 Istio 后还想继续用,但有些人试过之后就再也不想碰了。总之,大家都会做尝试,看看到底是不是那个自己需要的正确答案。”

     

    Envoy 的未来:像 Linux 一样无处不在

     

    Envoy 自开源以来取得了惊人的成功,远超出 Matt 当初的想象,他之前从来没想过 Envoy 会像现在这么成功、这么普及。在最初决定开源 Envoy 的时候,Matt 的梦想其实很简单,就是能再吸引到一家愿意使用它的公司,只要这样就知足了,因为这意味着他创造出了其他人愿意实际使用的东西。如今,Matt 觉得自己当初的想法有些“好笑”:“问题已经不再是有没有人用 Envoy,而是还有谁不用 Envoy”。

     

    不过 Matt 坦言,Envoy 的普及之路还很漫长。目前采用 Envoy 的主要还是大型企业,已经没多少大型企业能拒绝 Envoy 了,但 Envoy 在长尾分布的那条尾巴上还没什么动静。很多公司还在使用 Nginx proxy 之类的解决方案,但 Matt 认为这也正是 Envoy 的机遇所在。

     

    虽然 Nginx proxy 等解决方案也都是很出色的软件,但 Matt 认为“它们在市场上的寿命只剩 10 到 15 年了。”Envoy 和 Nginx 的诞生相差了 10-15 年,在这期间,基础设施发生了非常多变化。Nginx 和 Nginx proxy 诞生时的基础设施更趋于静态,因此它长期保持一种更为传统的配置方式,即在磁盘上保存一个配置文件,在需要的时候重新加载。而 Envoy 从创建之初就考虑到在动态环境下灵活运行,其获取和配置的机制更能适应越来越动态化的现代基础设施。Matt 认为这是两者之间最大的区别。

     

    在他看来,如今 Envoy 已经开始引导 Nginx 和 Nginx proxy 的发展方向了。虽然目前 Nginx 确实还有不少用户和实际使用案例,但未来它们肯定会被逐渐替代掉,当然还需要花一些时间。

     

    此外,Matt 认为,随着时间推移,在未来 10 到 15 年里,人们会更多关注服务器列表和函数式平台。相比之下,无论是 Kubernetes 还是 Envoy,最终都会慢慢不再是大家关注的焦点,尤其对于普通开发者来说更是如此。

     

    Matt 表示:“正常来讲,像 Envoy 和 Kubernetes 这样的项目在进入第十个年头之后,都会慢慢失去存在感。到时候人们应该更多转向函数式代码部署平台了。当然,我始终认为未来 Envoy 很有可能变得更加无处不在,但无处不在其实有两层含义,一是技术被广泛使用,另一层则是人们压根意识不到他们正在使用这个技术。(正是这种存在感的消失,让技术真正变得无处不在。)就像整个世界都运行在 Linux 之上,但大多数人都感受不到 Linux。我觉得未来 Kubernetes 和 Envoy 也会走上类似的道路。”

     

    写在最后

     

    在这次对话中,我们能切实感受到 Matt 对于 Envoy 未来发展的信心十足。但对于如何选择网关方案,Matt 不止一次强调:他绝不会按头安利,宣扬什么每个人都应该选择 Envoy。

     

    在他看来,每个人应该选择能满足需求的最简单的技术,只要原本的解决方案仍然可行,就没必要做任何改变。如果一家公司正在使用 Nginx 而且效果不错,那最好别做任何改变。除非他们遇到了某个特定的、Nginx 没办法解决的问题,比如可观测性问题、比如开源 Nginx 无法提供某些功能,那 Envoy 也许会是个不错的选项。首先还是要搞清楚自己需要解决的问题是什么。

     

    “不妨先从单体式架构开始,从最简单的云服务开始,从 AWS Lambda 开始,从小处入手。随着项目的发展,情况会变得更复杂。总之,别追赶潮流,只追赶问题。核心只有一个:明确要解决什么问题,然后找到最简单的解决办法。

    2022-11-03 13:306253
    用户头像
    蔡芳芳 InfoQ主编

    发布了 778 篇内容, 共 489.2 次阅读, 收获喜欢 2746 次。

    关注

    评论

    发布
    暂无评论
    发现更多内容

    每日算法刷题Day13-在O(1)时间删除链表结点、合并两个排序的链表、把字符串转换成整数

    timerring

    算法题 9月月更

    【字符串函数内功修炼】strncpy + strncat + strncmp(二)

    Albert Edison

    C语言 9月月更 strncpy strncat strncmp

    中国市场到底有多少国产开源操作系统?

    雨果

    操作系统 开源操作系统

    [SSM]前后台协议联调①

    十八岁讨厌编程

    Java 后端开发 9月月更

    OceanBase本周活动|从0到1数据库内核实战教程;对话ACE第五期;Meetup广州站

    OceanBase 数据库

    Flink计算框架概述

    阿泽🧸

    9月月更 Filnk

    python小知识-类全知道

    AIWeker

    Python python小知识 9月月更

    J-Tech & 开源之夏|什么是比快更快的向量搜索

    Jina AI

    搜索引擎 开源 开源之夏

    中国20强游戏公司2022上半年年报分析:复合因素下业绩增长承压,海外新兴市场蕴含增长新趋势

    易观分析

    游戏 海外市场

    Qt|QGraphicsView架构下实时鼠标绘制图形

    中国好公民st

    c++ qt 9月月更

    [SSM]前后台协议联调②

    十八岁讨厌编程

    Java 后端开发 9月月更

    [Javaweb]JSON

    十八岁讨厌编程

    javaWeb 后端开发 9月月更

    ESP32-C3入门教程 基础篇(二、GPIO中断、按键驱动测试)

    矜辰所致

    GPIO ESP32-C3 按键驱动 9月月更

    Flink Collector Output 接口源码解析

    JasonLee实时计算

    flink 源码

    前端食堂技术周刊第 53 期:React Router 6.4、VS Code August 2022、2022 Google 谷歌开发者大会、Meta 开源 MemLab、Vue.js 技术内幕

    童欧巴

    Vue vscode React

    计算机网络——物理层设备

    StackOverflow

    编程 计算机网络 9月月更

    极速安装和体验k8s(Minikube)

    程序员欣宸

    Kubernetes 9月月更

    JS-内置对象API-Array(数组)-(一)-改变原数组的API-篇

    Sam9029

    JavaScript 前端 9月月更

    ESP32-C3入门教程 基础篇(一、ADC采样)

    矜辰所致

    ESP32-C3 9月月更 ADC采样

    你以为抓包软件只能抓包吗?看看抓包软件还有啥牛逼功能!

    HullQin

    CSS JavaScript html 前端 9月月更

    C++学习---_IO_lock_t的源码学习

    桑榆

    c++ 源码阅读 9月月更

    常见监控分类概述

    穿过生命散发芬芳

    监控 9月月更

    史上最详细Ajax学习笔记

    楠羽

    笔记 ajax数据 9月月更

    大数据调度平台Airflow(三):Airflow单机搭建

    Lansonli

    airflow 9月月更

    什么是数据资产管理?5个角度帮你参透数据资产管理

    雨果

    数据资产管理

    PC端小程序引擎,或许不就未来能解决桌面应用兼容性

    Speedoooo

    小程序 桌面开发 桌面端 桌面应用

    互联网公司员工职级、研发效能度量、OKR与绩效考核

    laofo

    DevOps cicd 研发效能 持续交付

    什么是混合云?与公有云、私有云有啥区别?

    wljslmz

    云计算 公有云 私有云 混合云 9月月更

    ShareSDK 开发过程中常见问题

    MobTech袤博科技

    ios android sdk

    轻量化的灰度发布实践技术方案

    Speedoooo

    灰度发布 ab测试 轻量化

    精通高并发与内核 | Linux内核协程解析

    小明Java问道之路

    线程 进程 协程 Linux内核 9月月更

    Envoy Gateway会成为网关现有格局的冲击者吗?| 专访Envoy创始人_语言 & 开发_蔡芳芳_InfoQ精选文章