产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

与 Nginx 同行,Pipy 究竟有何能耐?

  • 2021-05-25
  • 本文字数:3462 字

    阅读完需:约 11 分钟

与 Nginx 同行,Pipy究竟有何能耐?

作者 | 施尧


如何精细化管理企业内网流量?来看看 Flomesh 创始人怎么说


互联网包罗万象的今天,流量管理无处不在。这一普遍需求,催生了很多流量管理软件。除了 Nginx 外,具有代表性的既有 Apache httpd、Tomcat、untertow、Lighttpd、Microsoft IIS、IBM WebSphere、Oracle Weblogic 等老牌 web 和应用服务器,也有 OpenResty,Envoy 等专注于流量管理的新力量。


随着内网微服务等大型分布式系统的发展,技术栈从传统的“内容编程”向“流量编程”演化。这些流量管理软件都有自身擅长的领域,在互联网发展、终端形态不断变化的过程中发挥着重要的作用。与此同时,流量管理从互联网领域快速进入云上和企业内网领域,“内(网)外(网)结合、(云)上(云)下结合、东西(向流量)南北(向流量)结合”的流量管理能力成为云时代的新热点。


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


    Flomesh 成立于 2018 年,于今年初开源了 Pipy。Pipy 最初为企业内网提供流量管理服务,经过这几年的打磨,Pipy 如今已成为“流量编程”领域的新力量,在众多业务场景中可与 Nginx 和 Envoy 一较高低,同时在企业内网这块空地上独树一帜。


    为探索 Pipy 的成长之路以及背后的设计思想,以及对“流量编程”领域的前沿思考。近期,小编趁 InfoQ Arch Summit 上海站专访了 Pipy 开发者蔡书。


    蔡书,Flomesh 联合创始人。开源技术爱好者,先后在 IBM、RedHat 供职多年。2019 年开始创建 Flomesh,2021 年开源其核心 Proxy 组件 Pipy,静态内容服务和 HTTP 代理性能全面超越 Nginx。目前全职开发和推广 Pipy 及其商业化产品,在多家股份制商业银行成功上线运行,支撑单一客户日 DAU 超过一亿。


    以下是访谈内容整理,分享给大家,Enjoy~


    定位于流量编程引擎,Pipy 的诞生是为了高效解决流量处理需求


    主持人:您之前提到过开源的 Pipy 对标 Nginx,而且在性能、扩展性等方面都比 Nginx 更有优势,那是不是可以认为 Pipy 就是 Nginx 的替代品?


    蔡书:这个问题非常好,身边好多朋友都问过我这个问题。首先肯定的说我们做 Pipy 并不是为了替代 Nginx,这里面有两层含义,第一是说 Nginx 本身作为一个非常优秀的堆栈的 Web Server,包含反向代理,负载均衡等经典功能,我们没有必要重复造轮子去替代他,无论从市场角度还是从技术角度来讲,这都没有必要。


    第二,Pipy 尝试解决的一些问题我们称之为“流量编程”,实际上是 Nginx 甚至整个行业都还没有解决的,从技术角度看,整个行业都还没有一个明确的解决方案,市场也是一片空白。那么什么是“流量编程”呢?对于有编程经验,尤其是了解 Java 编程的人,我们可以认为 Pipy 类似 netty,是一个高性能、易扩展的框架,基于这个框架可以快速开发出高性能网络服务程序,如 web server。就像 vertx 基于 netty,cassandra 也基于 netty 一样。


    除了像 Netty 封装了底层网络 API 操作外,pipy 提供了一个简化的 JS runtime,开发者可以使用 JS 语法开发上层逻辑。作为和 netty 对比,netty 是 Java 编写的,包含了 GC,多线程等特征;而 pipy 是单线程事件驱动的,同时 pipy 有自己的内存管理,基于 C++的 pipy,规避了类似 Java 和 Go 等编程语言常见的 GC 等“深坑”。


    回到 nginx 的话题,我们在开发过程中需要做功能和性能测试,利用 HTTP 堆栈的各种工具,测出的数据更有参考意义,更容易对比。举个例子,采用 Pipy 跑 1000 万请求测试的平均延迟是多少?很多基于 HTTP 的工具可以使用(wrk, ab, gatling 等),也有很多可以对比参考的 server 实现(nginx, envoy, undertow 等),因此我们选择 HTTP 堆栈进行基准测试。但是实际上除了 HTTP,pipy 还支持 Redis,Dubbo,socks 等协议,并且还在继续开发支持其他协议。


    再回到 Pipy 这个话题,Pipy 实际上更像一个底层的发动机模版,在这个模版之上我们可以快速开发适配摩托车的发动机,适配汽车的发动机,甚至适配大卡车、越野车,以及适配轮船的发动机。所以从软件定位上来说,Pipy 其实比 Nginx 要更加底层,是一个全新的领域。


    主持人:您刚刚提到的流量编程概念很新颖,能详细说说她的来龙去脉吗?


    蔡书:流量编程是一个非常有趣的话题,其目的是满足流量处理的需求。早期流量处理需求是通过专用的网络硬件设备来解决。而随着云计算的快速发展,很多硬件设施被软件化,我们看到越来越多的底层资源比如网络、存储等被软件定义,软件定义的特征之一就是“可编程”。有一个词叫做 InfrastructureAs Code,说的就是基础设施可编程。相应地,我们的流量编程是这个细分领域里的一个子集,为的是更高效地解决流量处理的需求。


    以此为基础我们可以将"HTTP 流量编程"这个模式泛化一下,比如我们是不是可以对 MySQL 的流量做编程,对一个 kafka 的请求做编程,对一个 Redis 的请求做编程,对 Dubbo 的请求做编程?目前这样的需求很旺盛。


    Nginx 在最开始是一个 Web Server,它预留了一些扩展接口借口,可以扩展新的功能,对于 HTTP 流量编程,Nginx 提供了成熟的模型;但是对于非 HTTP 流量,nginx 预留的接口就很简单了,并不适合扩展开发。一方面接口比较晦涩,不那么容易使用;另一方面 C 语言扩展的编程难度还是挺大的,不利于普及。


    今天在 Session 里我会分享一些 Pipy 的落地应用。举个例子,我们拦截了 Redis 请求之后,他访问的是哪一个 Redis 的实例,或者哪个集群?这实际上可以由中间 Proxy 的环节来决定,需要有一些 If else 之类的条件进行分流。这个就是“redis 流量可编程“的需求。我们把这种能力叫做流量编程,尤其泛指面向应用层的流量处理能力,包括应用程序本身,比如 rest 请求;当然,也有一部分面向中间件的。

    源起于定制化修改报文,Pipy 要做流量通路上的智能交通系统


    主持人:您开发 Pipy 的时候,看到了哪些当时还没有被满足的市场需求,或者说客户的具体需求?


    蔡书:这个话题非常好,回到本源来说,这个问题就是所谓的“Pipy 从哪里来”这样的经典话题。实际上最开始的时候,我们在编程过程中发现客户有一些需求具有行业共性。举个例子,银行客户常用的定长报纹,需要固定前 6 个字节作为报头。医疗、电信和泛金融行业也希望类似信息能够被路由,被取样。


    一开始,我们去找相应工具比如 openresty 去解决这个问题,但发现它缺少一个抽象层。于是我们打算从下往上写,自己写一个 socket 程序,但后来也发现这样开发的应用维护和扩展难度很大。最后我们尝试在应用协议和底层 socket 之前加入一个抽象层,这个抽象层解决了底层编程的复杂度,同时又提高了现场开发的效率。


    那我们就发现存在这样的一些行业性需求未被满足,我们沿着这条路走下去不仅可以解决专属的行业业务问题,还可以解决泛化的技术领域的问题,比如 Redis 的问题,比如 Kafka 的问题。于是我们不断地迭代,到现在三年时间,Pipy 已经越来越通用,能解决更多需求了。


    主持人:Pipy 开发的整个蓝图是什么样的,现在进行到哪一步了?接下来有什么样的计划呢?


    蔡书:我们的蓝图可以类比交通系统。城市中的公路网络一样,有环路,有小胡同,各处的交通设备可以管车流量,管 traffic。对于我们来说,在一个企业内部网络中,如果规则明确并且遍布足够多的 proxy,就像城市里每一个路口设置了足够多的标识符,那么交通流量就可以自动地做智能化调度,类似自动驾驶。


    继续想象道路系统,首先道路上有一些可识别的东西,那么无人驾驶系统就可以自动根据设定的路线行驶。对于我们来说,我们的第一步是铺设所有控制点,这是类似红绿灯的基础设施。Pipy 在整个蓝图中是一个开始,它只是一个小组件,负责为流量导航。接下来我们会开发控制体系,也就是基于这些“标识”的“智能交通”体系。这样企业内网的流量就可以高效、可控、安全、智能的自动流动,并且需要更少的人工干预。


    下一阶段我们会布置一些控制器(Controller),用来适配 K8s,阿里云,AWS 等,甚至可以和传统网络设备耦合。最终构建出一个完整的可自动调度流量的控制体系。这是我们的整个蓝图。


    主持人:您觉得未来在流量管理这个领域中,行业集中度会如何发展?


    蔡书:首先我们看到这种细粒度的智能流量管理是最近几年才演化出来的,也就是说变革才刚刚开始。很早之前大家靠手工去配置网络,设定流量传输规则;2017 年左右随着微服务体系的普及,单一集群节点变多,智能流量管理的需求越来越旺盛,于是很多团队开始尝试解决这类需求,典型的有 Nginx,envoy,Linkerd 等等。除此外还有客户自己编写工具,典型的有 traefik,百度的 BFE 等。


    我们认为这个领域在未来几年会是百花齐放的阶段。然后慢慢地,整个领域会收敛;由于产品性能,资源占用率等原因,最后可能只剩 2~3 个成熟产品。那从终局来看,能同时做到高性能,低延迟,可扩展,可编程而且学习曲线容易被大众接受,这件事并不容易。


    对于我们而言,我们希望在普及度,易用性方面多下功夫,希望这条路能一直走下去,到最后留下的成熟产品中有我们一个。

    2021-05-25 15:525400
    用户头像

    发布了 74 篇内容, 共 28.6 次阅读, 收获喜欢 83 次。

    关注

    评论 1 条评论

    发布
    用户头像
    1.名字起得不是很好,很难搜。
    2.不过产品想法到是很不错,做得对,大力推社区,毕竟是想要针对流量编程,用户使用成本更大,如果没有足够多的人和企业参与,产品标准无法稳定,就不会有人去使用,并且很容易就失去了生命力。而且大陆企业开源产品的后续维护口碑不好,这是环境决定的。
    相比之下现在的sevice mesh里用的sidecar应该属于配置流量,例如istio的envoy,这种方式已经可满足基本上所有的中小企业了。
    2021-05-30 09:09
    回复
    没有更多了
    发现更多内容

    作业调度问题-遗传算法

    alexgaoyh

    Java 遗传算法 作业调度 生产调度 多作业多任务

    MacOS Mojave(macos10.14系统) v10.14.6(18G103)正式版

    iMac小白

    集成电子商务平台:如何通过API获取实时商品数据

    Noah

    新格局,新生态!天翼云以国云智算底座赋能AI产业发展!

    天翼云开发者社区

    小程序 云计算

    简易异步任务中心&批量导入技术处理方案

    京东科技开发者

    IPQ9574: The core strength of WiFi 7 technology, leading the future of wireless communications

    wallysSK

    在ComfyUI中如何制作高质量白底图

    原力在线

    AI AIGC AI 绘图 白底图 电商场景

    VSD Viewer for Mac(Visio绘图文件阅读器) v6.16.1特别版

    iMac小白

    一个 WPF + MudBlazor 的项目模板(附:多项目模板制作方法)

    EquatorCoco

    开源 源码 WPF 项目开发 模板

    Picturesocial | 只要 5 分钟,发现容器编排的秘密武器!

    亚马逊云科技 (Amazon Web Services)

    API

    小程序SDK在金融、医疗和教育等场景中的应用和安全性保障相关

    Geek_2305a8

    【天涯神贴】最全合集,重温下经典

    Geek_bbbdb0

    天涯神贴

    NFTScan 正式上线 Mantle NFTScan 浏览器和 NFT API 数据服务

    NFT Research

    NFT NFT\ NFTScan

    聊聊ClickHouse MergeTree引擎的固定/自适应索引粒度

    京东科技开发者

    Reducer 和 Context实现简单的Redux

    伤感汤姆布利柏

    拥抱 AI,支付宝小程序云助力全网小程序生态变革

    TRaaS

    支付宝小程序 人工智能 云开发 弹性云托管 小程序云

    数字先锋|智慧“育”见未来!天翼云携手知学云为人才培育注入新活力

    天翼云开发者社区

    人工智能 教育

    当我谈查询优化器时,我谈些什么 (1)—— IR 设计

    Databend

    探索五款全球知名的JavaScript混淆加密工具

    雪奈椰子

    JAVA应用CPU跳点自动DUMP工具 | 京东物流技术团队

    京东科技开发者

    图像处理-Java-TIFF转换JPG

    alexgaoyh

    Java 图像处理 格式转换 jpg tif

    Express简单使用及部署在vercel

    派大星

    node.js Express

    通过ETLCloud CDC构建高效数据管道解决方案

    RestCloud

    数据同步 ETL CDC 数据集成工具

    Kurator V0.6.0:实现应用全流程生命周期管理

    华为云开发者联盟

    云原生 后端 华为云 华为云开发者联盟 Kurator

    与 Nginx 同行,Pipy究竟有何能耐?_HarmonyOS_施尧_InfoQ精选文章