QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

与 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:525441
    用户头像

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

    关注

    评论 1 条评论

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

    Amazon EC2使用测评

    查拉图斯特拉说

    服务器 亚马逊云科技 EC2

    Mac电脑硬件信息查看 EtreCheckpro 激活最新版

    胖墩儿不胖y

    Mac软件推荐 硬件信息检查工具

    Perfectly Clear Workbench for mac 智能图像清晰处理工具推荐

    加油,小妞!

    图像处理

    环境变量配置无效?

    矩视智能

    深度学习 机器视觉

    CSP直通车“助你成为优秀的专业敏捷教练”| 12月线上面授双周末班

    ShineScrum

    敏捷教练 专业敏捷教练

    mac上好用的图像清晰处理工具:Perfectly Clear Workbench 激活中文版

    mac大玩家j

    Mac软件 图像处理工具 图像清晰度处理

    Xmind for Mac(思维导图软件) 24.01中文激活版

    mac

    XMind 思维导图软件 苹果mac Windows软件

    Xmind for Mac(思维导图软件) 24.01中文版

    展初云

    Mac 思维导图 XMind

    亚马逊云科技大语言模型加速OCR应用场景发展

    归来

    人工智能 OCR 大语言模型

    强大好用的shell:shell命令

    小齐写代码

    聚力未来!云起无垠成为光合组织成员单位

    云起无垠

    MouseBoost Pro for Mac(右键助手)

    展初云

    Mac软件 鼠标辅助

    普及高质量融资管理举措 ,打造城投国资领先实践,用友Fast by BIP很在“行”

    用友BIP

    全球司库 国资数智化

    AWS云服务器EC2实例进行操作系统迁移

    乌龟哥哥

    AWS Amazon EC2

    MacOS系统的硬件信息扫描工具:EtreCheck pro for Mac

    加油,小妞!

    etrecheckpro 硬件信息扫描工具

    服务器 突然断电有什么危害

    Geek_f19a80

    数据流图:一篇文章教你如何轻松画出来

    职场工具箱

    流程图 教程分享 绘图工具

    一起学Elasticsearch系列-Query DSL

    Java随想录

    Java 大数据 ES

    玩转 Cgroup 系列之二:使用 CPUShares 管理 Cgroup

    小猿姐

    Linux Cgroup CPUShares I/O 调度

    如何正确执行 DORA 指标

    SEAL安全

    DevOps 持续部署 DORA 企业号11月PK榜

    Fig Player for Mac(多媒体播放器)

    展初云

    播放器 Mac软件 Fig Player

    玩转 Cgroup 系列之一: Cgroup 的起源、重要性和基本工作原理

    小猿姐

    Linux 内核 资源管理 Cgroup

    华大北斗荣获2023年度卫星导航定位科技进步奖特等奖

    江湖老铁

    利用uni-app 开发的iOS app 发布到App Store全流程

    雪奈椰子

    理事长走进统信软件,深度探讨社区发展规划 | 理事长走进系列

    OpenAnolis小助手

    开源 AI 操作系统 龙蜥社区 统信软件

    软件APP定制开发有那些优势?

    Geek_16d138

    软件定制 app定制开发

    轻松理解 Transformers (4) :Decoder 和 Output 部分

    Baihai IDP

    人工智能 深度学习 AI Transformer 白海科技

    用友在ICDAR发表论文,AI实力获国际顶级学术会议认可

    用友BIP

    人工智能

    文心大模型驱动的代码助手Comate

    百度开发者中心

    大模型 #人工智能 智能代码助手

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