50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

    关注

    评论 1 条评论

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

    阿里云技术公开课直播预告:基于阿里云 Elasticsearch 构建 AI 搜索和可观测 Chatbot

    阿里云大数据AI技术

    人工智能 elasticsearch chatbot rag AI搜索

    微信多开 WechatTweak for Mac(微信多开、消息防撤回工具)安装教程

    Rose

    集中回答客户关注的数据云场景的四个问题

    奇点云

    大数据 互联网 数据云

    最佳GTD时间效率工具 OmniFocus Pro 4永久激活版

    Rose

    电商独立站运营:构建成功的数字化商业据点

    科普小能手

    数据挖掘 电商 独立站 API 接口 API 测试

    杭州站来袭-向心力|中外AI应用和出海实战分享沙龙

    Zilliz

    非结构化数据 AI应用 GenAI AI商业化

    荣耀 | 7thonline第七在线荣获托比网与易观之星两项大奖

    第七在线

    芯盾时代统一身份安全管理的闭环能力建设

    芯盾时代

    iam 统一身份管理平台 特权账号管理

    合合信息:探索视觉内容安全新前沿

    Yan-英杰

    Python 人工智能 图像处理

    10个案例告诉你mysql不使用子查询的原因

    威哥爱编程

    MySQL sql

    当Kmesh遇上Ambient Mesh

    华为云原生团队

    云计算 容器 云原生

    NAS局域网移动端视频播放神器 nPlayer for Mac 中文激活版

    Rose

    Bartender 5:Mac菜单栏整理大师,提升工作效率必备!

    Rose

    简化的架构治理:使用 NocoBase 构建应用程序目录

    NocoBase

    开源 低代码 无代码 Web应用 治理架构

    鸿蒙(HarmonyOS)原生AI能力之文本识别

    猫林老师

    鸿蒙 HarmonyOS 鸿蒙应用开发 鸿蒙原生应用开发 HarmonyOS NEXT

    电力能源管理系统(源码+文档+部署+讲解)

    深圳亥时科技

    记录一次「OSS上传文件的前置处理机制」实例剖析

    京东科技开发者

    推荐一款免费的数据库SQL审核,性能诊断与优化平台

    威哥爱编程

    sql SQL工具

    WiFiSpoof:MAC地址随心换,网络安全再升级!

    Rose

    区块链智能合约的开发流程

    北京木奇移动技术有限公司

    智能合约 区块链技术 软件外包公司

    【新年专刊】新的一年设定2025目标--催化型画布

    ShineScrum

    个人目标

    FonePaw Android Data Recovery Mac 安卓手机数据恢复软件中文版

    Rose

    由 Mybatis 源码畅谈软件设计(一):序

    京东科技开发者

    网络安全养生秘籍-轻松完成等保测评流程

    行云管家

    网络安全 等保 等级保护 等保测评

    算力荒缓解,自主化智算还有必要吗?

    脑极体

    AI

    解码通用 AI Agent:七步构建你的智能系统

    Baihai IDP

    程序员 AI AI Agent

    【干货】商品计划驱动零售盈利性的数据利器

    第七在线

    由 Mybatis 源码畅谈软件设计(二):MappedStatement 和 SqlSource

    京东科技开发者

    AI智能体的开发流程

    北京木奇移动技术有限公司

    AI大模型 AI智能体 软件外包公司

    LUMEVAX会议一体机:开启智能会议新征程

    cts喜友科技

    视频会议

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