专访|开源之夏最佳质量奖 Apache RocketMQ Committer 黄章衡
随着开源之夏2022年度优秀学生名单出炉,其中Apache RocketMQ Committer 黄章衡同学获得开源之夏最佳质量奖。今天,我们也带来黄章衡同学的人物专访。
https://summer-ospp.ac.cn/#/finaltermdata/outstandinglist
1 自我介绍
黄章衡:我来自福州大学 19 级计算机系,平常喜欢研究分布式系统和数据库。我的兴趣是参与开源项目,做开源贡献,我活跃参与了多个开源项目,包括 Apache RocketMQ,SOFAJRaft 等等。
OSPP:你是从什么阶段开始参与开源的?可以跟我们分享一下最喜欢的开源项目吗?
黄章衡:我是从大二下学期 (2021.5) 开始参与开源的,最喜欢的开源项目是 RocketMQ。
OSPP:你的专业是计算机相关专业,大学期间有丰富的实践经验,也获奖颇多,有什么珍贵的经验可以跟大家分享吗?
黄章衡:参加一些竞赛可以帮助我们提高自己的团队协作能力。此外,参加竞赛最重要的是要找到合适的队友, 团队里每个队员都要各司其职。
OSPP:在专业学习的同时,你认为提高代码质量有什么学习方法和技巧吗?
黄章衡:我觉得提高代码质量的途径有很多,一方面可以通过学习开源项目的内核源码来提高代码质量,另一方面就是通过实践来提高,我们往开源社区提交代码的同时,会有很多前辈帮我们 review 代码,这是提高代码质量最快的途径。
OSPP:近年来开源概念越来越热,你认为参与开源对于计算机专业的大学生来说是必要的吗?
黄章衡:显然是非常必要的,这是一个内卷的时代,非常多的同学往 '后端' 这个方向卷,此时如果有比较多的开源贡献,会让个人的简历非常有竞争力。
2 我与开源之夏
OSPP:这已经不是你第一次参加开源之夏了,去年还获得了的突出贡献奖。当时选择参加活动的原因是什么?连续两年的参与有什么不一样的收获吗?
黄章衡:当时选择参与的原因是那时候刚好学习了 SOFAJRaft 的源码,又刚好有开源之夏的这个活动,又刚好对 '重构日志存储系统' 这个项目有比较明确的思路,这些'刚好'让我选择了参与开源之夏。如果说去年的开源活动是我的 '引路人',让我踏上了开源这条路,今年就是我个人'蓬勃发展'的时间,我参与了许多开源社区,例如 RocketMQ,Tiflash 等等,可以说我彻底爱上了开源。
https://summer-ospp.ac.cn/2021/#/org/prodetail/210170433
OSPP:请介绍一下你在 RocketMQ 社区做的项目
黄章衡:在 RocketMQ 4.5.0 版本之后,RocketMQ 提出了 DLedger 模式(Raft 模式)的部署架构,在 DLedger 模式下,利用 Raft Commitlog 代替了原来的 Commitlog 了,使得 Commmitlog 具备了选举的能力,当 Master Broker 故障后,通过内部协商,从其他的 Slave Broker 中选出新的 Master,完成主备切换,同时 Raft 的算法也保证了 Commitlog 的一致性。但是由于 Raft 能力在复制链路上也导致这样的部署架构存在一些缺点。
我们希望能将 DLedger(Raft)能力进行上移,将其作为一个选主组件 DLedger Controller,它是一个可选的、松耦合的组件,当部署 DLedger Controller 组件后,原本 Master-Slave 部署模式下 Broker 组就拥有 Failover 能力。DLedger Controller 可以选择内嵌在 NameServer 中(Nameserver 本身能力仍然是无状态的,若挂掉多数派只是无法提供选举能力),也可以独立部署。
https://summer-ospp.ac.cn/#/org/prodetail/228ad0052
OSPP:今年的开源之夏项目开发已过半,在项目进行中遇到的印象最深刻的困难是什么?如何解决的?有什么收获吗?
黄章衡:RocketMQ 社区的这个项目目前已经开发完毕了,并且合入了主分支,我也依靠这个项目成为了 Committer。我们一开始的时候设计了一份非常完善的项目方案书, 所以后续在开发的过程中并没有花费很多时间。遇到最大的问题应该是在最后的测试阶段,在网络分区的场景下遇到了比较多的 Bug,但还是一一解决了。
OSPP:通过参加开源之夏,你对开源和开源社区有新的认识吗?
黄章衡:大力发展开源社区是一个非常有意义的事情:
个人方面: 这让我们这些 '平凡' 的学生有机会接触企业级的项目,有机会能够和众多优秀的前辈交流沟通,有机会提高简历的竞争力,有机会提高个人的技术。
企业方面: 开源社区其实是提高一个项目影响力和知名度最快的途径,例如阿里云开源的 RocketMQ,PolarDB,PingCAP 开源的 TiDB 等等,现如今都是 '家喻户晓'。此外,开源社区还能可以吸引众多优秀的开发者一同参与项目的研发和改进。
3 我与Apache RocketMQ社区
OSPP:简单介绍一下目前所在的Apache RocketMQ社区
黄章衡:引用官方的原话:
Apache RocketMQ is a distributed messaging and streaming platform with low latency,high performance and reliability,trillion-level capacity and flexible scalability.
OSPP:是什么原因让你选择投身开源社区?你目前的专注的技术领域是什么?后续规划是什么?
黄章衡:为了提高个人的技术能力。我目前专注的领域是消息队列,后续会想往消息队列和数据库方向发展。
OSPP:你认为在开源社区和企业公司进行开发工作有什么不一样的地方?
黄章衡:在开源社区做开发是 '细水流长' 的,不会有 ddl,不会有 push,我们可以在个人的空余时间进行研发。此外,做开源贡献是一个非常有成就感的事情,因为我们做的项目整个社区的人都看得见~
4 收获与寄语
OSPP:你认为参与开源之夏、社区贡献对于在校生的学习专业提升和就业选择有哪些帮助?
黄章衡:帮助是非常大的,我个人觉得,简历上有一段好的开源经历抵得上一段大厂的实习经历。现在基本每个大厂都有基础架构部门,我在求职的过程中也发现,这些基础架构部门非常喜欢招有开源经历的学生。就我个人而言,学历背景没有很出众,但是也能凭借着开源经历拿到一些大厂的 offer。此外,开源社区是一个认识优秀的前辈,扩展自己人脉的最佳机会。在这个过程中,会遇到很多赏识自己的前辈的。
OSPP:之后会继续参与开源吗?计划如何更深入地参与开源?
黄章衡:我会继续参与开源社区的。今年在 RocketMQ 社区学到了很多,特别是如何深入的参与社区。参与社区并不只是提交一些代码就可以了,更重要的是花时间去 Review 其他同学提交的代码,这可以帮助我学习掌握 RocketMQ 中的不同模块,其他社区也同理。
OSPP:你想对 RocketMQ 社区的前辈说些什么呢?
黄章衡:首先是非常感谢社区前辈 给了我这次机会,让我有机会能参与 RocketMQ 这个知名项目的研发,同时也非常感谢带我做项目的金融通前辈(我的 mentor),在他的带领下,我只用了很短的时间就研发完了这个项目。此外,感谢所有帮我 review 代码的前辈。最后,希望在我们共同建设下,RocketMQ 社区的技术竞争力和影响力能够更上一层楼!
OSPP:为参与开源之夏的学弟学妹提供一些经验与建议吧
黄章衡:我觉得最重要的是敢于迈出第一步吧,身边有一些同学确实有参与开源的想法, 但是总会因为怀疑自己的能力导致最后不敢参与。我觉得,只要敢迈出第一步, 并且坚持不懈,在社区前辈的带领下,完成一个项目并不是什么难事的。