Skip to main content

学生专访|Apache APISIX 陈焕新——开源不是拦路虎,勇敢迈出第一步

· 阅读需约 15 分钟

本期开源之夏 2024 学生专访来自 Apache APISIX 社区中选学生陈焕新,他在本届活动中承担的项目是:集成 AWS 和 GCP 的 Secrets Manager。

项目链接:https://summer-ospp.ac.cn/org/prodetail/248020128

ospp-2024-apisix-contributor
Click to Preview

自我介绍

OSPP:请介绍一下自己。

陈焕新:大家好,我叫陈焕新,目前在广州大学网络空间安全专业读大三。主要的技术栈围绕后端开发/安全研发展开,平时写得比较多的语言为 Java/Go/PHP。在学校会打一些 ACM/CTF 比赛,喜欢摄影/开源/旅行。我的 GitHub 账号为 HuanXin-Chen,未来的一段时间里将会专注于服务端开发,如果有同学和我志同道合,欢迎随时和我交流 👏

OSPP:你是何时开始接触开源和开源项目的?有什么契机?

陈焕新:我是在大二上 11 月份的时候,开始接触开源。很早之前,我就开始关注OSPP官方公众号,但是我一直没有勇气去尝试,感觉开源是那么的遥不可及。但正好去年,我隔壁学校的一个学长他的参与经历出现在了公众号,当时对我来说是一种很大的鼓舞。我相信学长可以做到,我只要努力,一定也可以。在那之后我加了学长微信,了解了一些参与开源的流程,自此慢慢接触开源。同时开始选择性去参与一些线下的 meetup,并在 meetup 上去开始发表一些自己的疑问和看法

Huanxin Chen at Open-Source Meetup
Click to Preview

而对于我所选的开源项目,Apache APISIX,我是在实习的时候开始了解到它。因为我当时在实习公司负责 API 网关的建设性工作。网关对于我来说很是陌生,而深度了解学习这一背景的技术路径也很明确,那就是站在巨人的肩膀上学习。所以我在那个时候,开始在 GitHub 看看前辈们的代码,开始研究 Kong/APISIX/Higress 的源码。而刚好 OSPP 今年 APISIX 有课题,与我的专业也比较契合,便毫不犹豫选择参与其中。

OSPP:据了解,你积累了不少竞赛经验和项目实习经历,结合自己的实际体验,不同形式的项目实践和开源项目实践有什么区别?

陈焕新:是的,我在学校属于“又菜又爱玩”的计算机玩家,什么都会去尝试一些。

关于比赛,对于我来说更多锻炼的是基础知识的扎实能力以及团队合作能力。我在中学的时候开始学习编程,第一门语言是 C++,当时也和奥赛班的同学学了一些基础的算法知识。所以到了大学,更多的是通过比赛,去锻炼自己的基本功:编码能力+数据结构理解能力。当然还有的就是团队精神,像 CTF 这种团队比赛,获得成功永远不是一个人的队伍,你需要和队伍密切合作,达成共识,才有机会胜出。

关于开源项目实战,我觉得是在竞赛的基础上再上一步,这个时候你已经有改造创造世界的能力。除了基本编码能力,你需要有一定的技术积累,你需要达到这个项目的沟通门槛。所以往开源实战这步走,是一种技术人成长之路的自驱吧。与之相比就是项目实习,我觉得这两者从技术的帮助上,对个人成长都差不多。不过后者会有 DDL+OKR 等限制,你是在为公司创造利益,面向 PM 编程。而开源不是,你可以随心所欲在互联网上表达自己的技术热情,在互联网上创建属于自己的东西。其次就是解决的问题,开源项目解决的更多是一些通用问题,提供强有力的基础设施,而项目实习更多是解决一些企业特有的业务问题。

参与开源之夏

OSPP:请介绍一下你在本届开源之夏中承担的项目,分享一下你对该项目的理解和成果产出。

陈焕新:本次我承担的项目是 Apache APISIX,它是一个动态、实时、高性能的云原生 API 网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。

网关嘛,很简单的理解就是代理转发,但“横看成岭侧成峰,远近高低各不同”,从不同的角度理解,你会发现很多不一样的知识。随着我的深入,你可以理解为它也是一个大而全的 Web 系统,可以在这里接触到一些分布式/微服务的知识。

从服务提供方视角,提供能力越来越多,接入业务也越来越多;从内部研发视角,人力越来越多,需求越来越多。API网关相当于一个聚合者作用,将各子服务聚会在一起,做了一个业务层面的聚合管控,减少服务之间的笛卡尔积,提升研发效率。

APISIX 是站在前人基础上做的开发,基于 Nginx+LuaJIT 来做开发。而市面上也有其他的网关采用此技术,比如 Kong,但 APISIX 与之相比有如下的优势:

  • 无数据库依赖:选择 etcd 存储信息,可以控制做毫秒级别更新
  • 高性能路由匹配:基于 RadixTree,达到 O(K) 的复杂度匹配
  • 精细化路由:除了基础的内置配置,APISIX 还自研了很多特性
  • 多语言插件:用户可以选择 Lua、Go、Wasm 等编写自己的插件

篇幅有限,这里列举了一些比较容易理解的优势,很多的特性与思想,值得我们去学习。

Apache APISIX Diagram and Advantages
Click to Preview

而本次我负责的,是将 Apache APISIX 与这些 secret manager(HCV/AWS/GCP)集成,可以简化用户在 APISIX 中使用敏感信息的流程,让用户更加便捷地管理和使用存储在云端的敏感信息,提高整体系统的安全性和易用性。

OSPP:目前项目开发进展如何?在开发过程中是否遇到了挑战或者有趣的经历?你是如何应对的?有什么收获么?

陈焕新:目前项目进展全部顺利完成。在开发中确实有遇到一些比较有趣的经历,我举一个测试遇到的困难吧。因为我需要集成流水线跑测试,那么在不提供任何现有服务情况下,解决方法是通过 docker 拉一个本地模拟,或者是通过 Mock 去拦截。其中有一个 URL 我需要去 Mock 掉他。但是因为 URL 中出现 “:” ,导致 Mock 规则方法失效。我想了很多方法,后面我利用 APISIX 的本身,去解决了这个问题,即通过 Serverless 拦截转发。感觉非常有趣的一次思考,像是“以己之矛,攻己之盾”,也进一步加深了我对于网关的理解。

OSPP:导师对你的评价颇高,不仅局限在项目产出本身,还体现在社区的参与和导师的沟通上,在这方面有什么经验可以分享给大家。

陈焕新:其实我觉得我是一个不太会沟通的人,所以正是因为不会,我在每次需要沟通的情况下,都会努力降低好每一次沟通成本。比方说:我在学校当助教给同学讲课,那么我会提前制作好讲义+感知好同学一些可能的疑问,从而去减少真正沟通时的思考成本。再比如说:开源过程或者实际项目的对接过程中,我都会把自己的思考梳理成一个别人也能看得懂的文档,这样能快速让别人陷入自己的 idea 中,避免过多的解释成本,从而提升效率。

OSPP:在开源社区的体验如何?你对开源有没有新的理解?

陈焕新:这次开源活动的体验非常棒,不管是从前期准备,再到后面的开发中,沟通研发体验都非常顺畅。很开心能遇到一个氛围很好的开源社区,以及一个很给力的导师。我的导师白泽平也是之前 OSPP 的参与学生,他以一个过来人给了我很多经验帮助,非常感谢!对于开源理解,我觉得很大的感悟就是:开源从来不是什么拦路虎,从来不是什么权威,时刻保持好奇心,将你的想法大胆展现出来,勇敢迈出第一步!

寄语

OSPP:你会一直参与开源吗?你觉得参与开源对于计算机专业的大学生有何帮助?你所在的高校目前是否有开设开源相关课程?你身边同学参与开源的情况是否有了解?如果让你来鼓励高校学生参与开源,你会从哪些方面进行?

陈焕新:对于计算机专业的学生帮助,我觉得有如下几点:一是通过开源之夏这个平台,提升工程能力;二是通过开源参与,丰富自我作品集,提升就业竞争力;三是培养协作能力,提前掌握企业级的协作沟通能力;四是通过开源活动,辐射出去,扩充交际圈,认识更多优秀的人。

目前我所处的高校并没有开设相关课程,但是隐隐约约感受到学校其实也在开设注重学生的工程能力。有一些老师开始引导同学去使用改造一些开源软件,比如说我之前的数据库就是让我们去修改 postgre,开始让我们去了解开源软件并改造它。

我身边的同学并不是很了解开源,可能是我所处的圈子问题,大部分同学还是专注于一些比较知名的比赛,如 ACM/挑战杯等。所以如果让我来鼓励同学参与开源活动,我想我会参考挑战杯之类比赛,力争达到其知名度,让大家知道有这个活动可以参与。其次就是通过开源学生,让每个学校的中选者为代表,在其学校散播这种活动宣传,提升本土影响力和代表性。

OSPP:有什么话想对计划参加开源之夏活动的学弟学妹们说?

陈焕新:想说的话:首先,学弟学妹不用害怕,请勇敢迈出第一步,也许可能努力,但没有中选,但不要气馁,活动参与是形式,相信你在准备的过程中,也会有一个质的飞跃。其次,可以提前了解好自己感兴趣的领域知识,在开源前息保证自己有项目沟通的能力,达到参与的门槛。最后,请多和身边的人沟通,多和导师沟通,不断磨练自己的想法,切勿闭门造车。