查看原文
其他

项目开源一年多就从ASF毕业,开发者可以从中学到什么

oschina 开源中国 2020-09-02

7月15日,ASF 正式宣布,Apache APISIX 从孵化器毕业,并晋升顶级项目。

如果你去看一看 APISIX 的发展轨迹,会发现它的成长速度非常快。开源不仅让 APISIX 快速迭代,更成为它背后的初创公司向外沟通付费用户的一张名片。

去年4月,项目发起人温铭和王院生开始着手写代码,同年6月宣布开源,7月 APISIX 被纳入 CNCF 全景图,10月捐赠给 ASF,到今年6月通过投票,7月正式成为顶级项目,前后只用了一年3个月。

期间,还伴随着商用落地——开源两个月,就迎来首家付费央企用户。截至目前,APISIX 已超过千个节点在线上环境服务,其中不乏腾讯、网易、贝壳、优信二手车等大体量或是高流量用户。

“APISIX 是目前速度最快的 API 网关”,王院生说,他们在最初选型上,会尽量复用成熟组件,站在巨人肩膀上,避免自己造轮子,这样就可以把时间精力放到差异点上,如极致性能路由、热插件、高性能字段校验器、插件编排等 API 网关核心。

与大多数 API 网关不同,APISIX 不仅可以处理南北向流量,也可以处理东西向、微服务间的流量。下一季度,APISIX 计划落实 Service Mesh 领域相关功能。在两位发起人的规划里,APISIX 还要成为最受欢迎的开源 API 网关。

2人2个月,做了个可兼管微服务间流量的 API 网关

许多开源项目诞生的初衷,都是开发者工作时发现需要某个服务,然而市场上却没有合适的项目可以支撑,于是便自行开发并开源,填补空白,APISIX 也不例外。

“我们需要一款高性能、云原生的 API 网关”,王院生介绍,去年通信院发布的一个调查报告显示,中国有60%的企业都在做微服务转型,而 API 网关在微服务体系中非常重要,扮演“指挥家”的角色;同时,微服务越来越流行,传统单体大应用的场景正在逐渐减少,而云原生又再次为微服务演进提供了一些标准化方案。在这种大背景下,他们决定发起 APISIX 项目。

之后的竞品分析也让他们看到机会。2019年 Gartner 发布一篇《全生命周期 API 管理魔力象限》报告显示,在魔力象限中不少大厂商比如 Google 家的 Apigee,核心的 API 网关部分技术栈整体偏老;而在技术方案上有优势的公司,都是新公司,“这一度让我们感觉兴奋,有种机会就在眼前的感觉”,王院生说。

为了做一个高性能 API 网关,APISIX 核心代码遵循了精简的原则,用王院生的话说就是,臃肿基本就和高性能无缘了。

2019年6月6日 APISIX 开源的时候,核心代码只有几千行。经过一年发展,插件代码量早已超过核心部分。维持精简可以极大降低后期维护成本,尤其是对于开源项目。

王院生介绍,核心精简,功能、创新是不能少的。例如 APISIX 内置的 var 读取加速,重复读取同一 Nginx 变量提升了百倍。借助 radixtree(基数树) 方式匹配路由,让 APISIX 成为目前路由匹配速度最快的 API 网关。

现在,APISIX 保持着一到两个月发布一个版本的更新频率。 

2019年 APISIX 捐献给 ASF 的同时,也完成了 APISIX 的主体框架,比如动态负载均衡、全平台支持、安全插件、SSL、gRPC、TCP/UDP 动态代理、单机模式等功能。

“这些功能实现都是按照生产标准编写,有完整测试用例覆盖,截至7月9号,依然有用户在生产环境运行的是去年11月份版本,稳定性非常好,性能也是同类产品的2-10倍”,王院生说。

 

今年,APISIX 还将继续丰富生态,除了按部就班与社区一起丰富功能插件外,还增加了 Dashboard 和 k8s ingress controller 实现,帮助 k8s 用户更简单、高效的管理入口流量。并创新性的为 APISIX 增加插件编排机制,提高插件之间的联动能力,扩展用户场景。

25票赞同,从诞生到成为 ASF 顶级项目只用了一年

在 ASF 经历一次毕业投票,项目就接受了一次全盘检查。

APISIX 的毕业投票是 25 个+1(赞同)票通过的,包括 10 个 Binding(约束性投票),15个 Non-Binding(无约束性投票),没有 -1(否决) 票。

Apache 部分投票规则:

Apache 的投票过程可能看起来有点怪异。投票用-1和+1之间的数字表示,“-1”表示“否决”,“ + 1”表示“赞同”。


Binding Votes,约束性投票。通常,PMC 成员拥有正式的、有约束力的投票;针对从孵化器毕业项目的毕业投票,IPMC( Incubator PMC)拥有 Binding Votes。社区成员投票是 Non-Binding 无约束性投票,但通常鼓励社区成员投票,即使他们的投票只是建议性的。

在 ASF 中如果要毕业成为顶级项目,投票是最后一步确认环节,虽然这是毕业于否的决定票,除了需要拿到足够的 Binding +1票,也需要考察项目自身活跃度、是否独立发布过版本、贡献者数量、贡献者分布、License、品牌等是否均符合 Apache 要求。 

在 ASF 的孵化投票中,IPMC 的投票才会被记录参考,只有他们的投票是有效 Binding 的。由于邮件列表是公开的,对于非 PMC 也是可以投票,这些人的投票就是 Non-Binding 的。而对于 -1 票,代表有人不支持,这时投票人是必须要给出充分理由。APISIX 毕业,并没有反对票。 

不仅投票表决这一关过得顺利,从尝试捐赠开始,APISIX 就和 ASF 非常投缘。

2019年9月,王院生和温铭决定着手将项目捐赠给 ASF。当时他们阅读 Apache 官网内容,按照要求逐个梳理所有检查项,提前准备 APISIX 捐献资料。

“在华为开源能力中心技术专家姜宁的推荐下,我们参与了一次小型 Apache 会议,并把我们提前准备的资料给 Apache 主席 Craig Russell,确定我们是否符合要求,并告诉他们我们目前还缺 mentor ,当时参会的 Justin Mclean 就说,‘我来当你们 mentor 吧’。这样我们就找到了所有 champion 和 mentor ”,王院生回忆。

多去参加 Apache 的线下交流会是个好主意”,王院生认为,进入 ASF 孵化,除了需要自己要先认同 Apache 文化,还要与“圈内好友”多些互动,增加面对面的沟通弥补线上获取信息不足,防止自己对 Apache 文化理解有偏差。

除了线下方式,也可以通过更 Apache 的方式——主动在邮件列表为你的项目征求 mentor ,寻求孵化机会。

谈及 APISIX 的迅速孵化和发展,王院生透露,它的快速起步与之前一直做社区有关系,以前工作中积累的人气和经验直接推动 APISIX 成长,有些方法被证明非常高效

  • 线上+线下:两者要相结合,相互弥补。

  • 寻找和自己比较 match 的社区,做适当宣传:这里不能太直,推荐知识分享的方式。

  • 有意识培养新人:新建一些比较简单的 issue ,专门给想贡献的同学做开始。

  • 招募学习班:每次手把手培养新同学,一对一的协助他们完成第一个 PR 提交,从而逐步开始能为项目做贡献。

  • 避免私聊:引导大家到邮件列表或者仓库 issue 交流,知识需要沉淀、广播,对于某些特别有意义的话题,更是如此。

  • 开源作品为了保持活跃度,需要有阶段性的产出,比如支持某重要功能、引入新概念等。要一直勾着开源用户的心,这些想法可能来自社区,也可能是社区委员会的不定期聚会。

  • 此外一些个性有趣的用户使用过程、疑难杂症排除过程等,都可以记录下来给分享给社区。和大家一起学习一些问题排除方法,以及开源背后的故事。

用开源的方式让初创公司收获付费用户

APISIX 项目还有一个特点是,它是由初创公司的主要负责人开发并快速捐赠的。事实上,虽然开源作品不能为企业带来可预见的销售收入,但是可能将企业的技术服务能力转化成营收驱动力。

“对于我们这种小型初创类型公司,有一个开源身份和业内极致的网关作品,相反是更容易让更多用户知道我们,并导向成付费用户”,在关于商业化与开源的选择上,王院生认为,开源更注重长远效益。

目前基于 APISIX 的企业版开始对外试用,收费模式主要是根据 API 请求数量计费。王院生说,“由于 toB 的模式起步不会太快,短期内更看重高业务价值的客户来打磨产品,并努力把 APISIX 培养成被广泛使用、流行且好用的开源 API 网关。” 

当然,APISIX 开源首先是作为开发者的个人的决定。王院生和温铭从2015年开始,就和开源文化、社区有了比较多的接触,也在社区交流中飞速成长。重新实现 APISIX ,并捐赠给 ASF,除了对已有网关的扩展性、性能等不满意外,也是希望把多年积累沉淀出的产品共享。

去年7月,APISIX 被纳入 CNCF 全景图,但 APISIX 并没有顺势进入 CNCF 孵化,“ASF 更加田园、理想,对个人开发者友好,有明确的 committer、contributor、PMC 精英管理机制”,王院生解释,他们是有些理想主义的创业青年,想为这个社会、广大程序员做点有价值的东西,所以从一开始就确定选择 ASF。

现在,APISIX 已经正式成为 ASF 顶级项目,可以预见,将会有更多开发者加入项目的维护,我们也期待 APISIX 的开源生态更加完善。

嘉宾介绍


王院生,APISIX 项目发起人,深圳支流科技联合创始人,开源布道者,比较忠爱对性能、流量要求比较高的流量管理类方向。


推荐阅读

IBM招聘要求12年K8s经验,搁这挖谷歌人呢?

利用人工智能给游戏“开挂”,但求一败

性能是Ceph的1.84倍,网易开源分布式存储系统

Linux内核:容器底层cgroup如何使用

替代Windows的ReactOS终于有钱请全职开发了

Modified on

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存