随着开源之夏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:为参与开源之夏的学弟学妹提供一些经验与建议吧

黄章衡:我觉得最重要的是敢于迈出第一步吧,身边有一些同学确实有参与开源的想法, 但是总会因为怀疑自己的能力导致最后不敢参与。我觉得,只要敢迈出第一步, 并且坚持不懈,在社区前辈的带领下,完成一个项目并不是什么难事的。

专访|开源之夏最佳质量奖 Apache RocketMQ Committer 黄章衡的更多相关文章

  1. Apache RocketMQ 正式开源分布式事务消息

    近日,Apache RocketMQ 社区正式发布4.3版本.此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消息, ...

  2. 【Apache RocketMQ】RocketMQ捐赠给Apache那些鲜为人知的故事-转自阿里中间件

    序言 今年的双十一对阿里巴巴中间件消息团队来说,注定是个不平凡的日子.在这一天,稳定性小组重点攻克的低延迟存储解决方案成功地经受住了大考.整个大促期间,99.996%的延迟落在了10ms以内,极个别由 ...

  3. Apache RocketMQ分布式消息传递和流数据平台及大厂面试宝典v4.9.2

    概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache RocketMQ官网地址 https://rocketmq.apache.org/ Latest rel ...

  4. 前端开发的使用服务器环境开源项目 D2Server 可替代Apache

    推荐一个前端开发的使用服务器环境开源项目 D2Server 可替代Apache   攻欲善其事,必先利其器.前端开发,编辑器我们有了Sublime Text2,配置Server环境用……你可能会选择A ...

  5. Apache RocketMQ在linux上的常用命令

    Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录  1.启动Name Server  2.启动Broker 3.关闭Name Server 4 ...

  6. 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转

    转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...

  7. 问题排查之'org.apache.rocketmq.spring.starter.core.RocketMQTemplate' that could not be found.- Bean method 'rocketMQTemplate' in 'RocketMQAutoConfiguration' not loaded.

    背景 今天将一个SpringBoot项目的配置参数从原有的.yml文件迁移到Apollo后,启动报错“Bean method 'rocketMQTemplate' in 'RocketMQAutoCo ...

  8. Apache RocketMQ 消息队列部署与可视化界面安装

    一.介绍 Apache RocketMQ是一个分布式.队列模型的消息中间件,具有低延迟.高性能和高可靠.万亿级容量和灵活的可扩展性.核心组件由四部分组成:Name Servers,Brokers,Pr ...

  9. Apache RocketMQ 的过去、现在和未来 原创: DataPipeline DataPipeline数见科技 前天

    Apache RocketMQ 的过去.现在和未来 原创: DataPipeline DataPipeline数见科技 前天

  10. 四大开源协议比较:BSD、Apache、GPL、LGPL(转)

    转自: 四大开源协议比较:BSD.Apache.GPL.LGPL 本文参考文献:http://www.fsf.org/licensing/licenses/ 现今存在的开源协议很多,而经过Open S ...

随机推荐

  1. 免费领取云主机,在华为开发者空间玩转YOLOV3

    摘要:YOLOv3(You Only Look Once version 3)是一种高效的目标检测算法,旨在实现快速而准确的对象检测. 本文分享自华为云社区<华为云开发者云主机体验[玩转华为云] ...

  2. SMU Summer 2024 Contest Round 7

    SMU Summer 2024 Contest Round 7 Make Equal With Mod 题意 给定一个长度为 \(n\) 的数列 \(a\).你可以执行若干次操作,每次操作选择一个大于 ...

  3. 手把手教你利用鸿蒙OS实现智慧家居·LOT上云项目

    手把手教你利用鸿蒙OS实现智慧家居·LOT上云项目 一.前言 今天使用鸿蒙OS,做一个LOT上云的智慧家居项目.我们想实现的场景是这样的:云端WEB有一个控制界面,能够操控家房间里的灯和风扇,同时将房 ...

  4. 以Top-Down思维去解决问题——递归

    目录 递归的基础 递归的底层实现(不是重点) 递归的应用场景 编程中 两种解决问题的思维 自下而上(Bottom-Up) 自上而下(Top-Down) 自上而下的思考过程--求和案例 台阶问题 案例 ...

  5. 拼多多API出租,拼多多API租用,拼多多订单信息获取API,拼多多开放平台权限出租,拼多多开放平台API出租

    当前,拼多多开放平台的审核还是比较严格的,虽然可以申请,但是难度很大,对于一些用户来说困难还是蛮大的 拼多多的API主要拼多多订单信息获取.拼多多商品上传,拼多多库存更新等 需要这块API的一般是需要 ...

  6. bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT

    bug记录|NON-STATIC METHOD CANNOT BE REFERENCED FROM A STATIC CONTEXT   问题:原因:静态方法无法调用自己定义的非静态方法 解决方案:1 ...

  7. 录音转文字SDK哪家强?

    最近在做一款录音App,有一个模块是录音转文字功能,于是对比了市面上常见的API,国内做的比较大的主要有讯飞.腾讯.阿里.百度.华为. 讯飞 讯飞在国内做语音SDK是做的比较早的,翻译出来的准确率挺不 ...

  8. vuejs怎样封装一个插件(以封装vue-toast为例扩展)

    插件介绍 插件通常会为 Vue 添加全局功能.插件的范围没有限制--一般有下面几种: 1.添加全局方法或者属性,如: vue-custom-element 2.添加全局资源:指令/过滤器/过渡等,如  ...

  9. SQL Management studio copy paste result out (string_agg line break)

    refer : https://stackoverflow.com/questions/59283754/string-agg-with-line-break string agg char(10) ...

  10. C# – 冷知识 (新手)

    替 Action/Func Parameter 设置名字 public static void MatchBracket(string value, string bracket, Action< ...