随着开源之夏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. 【转载】 一块GPU顶数千个CPU内核,英伟达的这个强化学习利器技术细节终于公开了

    原文地址: https://mp.weixin.qq.com/s/FmFqmIqmknkpBQbNb2ioDA ============================================ ...

  2. 美国空军未来利用AI控制无人僚机执行空战或对地作战任务成为可能——AI算法强化学习控制无人机执行空战或对地作战成为可能

    来源: https://export.shobserver.com/baijiahao/html/640202.html https://baijiahao.baidu.com/s?id=177346 ...

  3. tensorflow的官方强化学习库agents的相关内容及一些注意事项

    源代码地址: https://github.com/tensorflow/agents TensorFlow给出的官方文档说明: https://tensorflow.google.cn/agents ...

  4. 9组-Beta冲刺-3/5

    一.基本情况(15分) 队名:不行就摆了吧 组长博客:9组-Beta冲刺-3/5 GitHub链接:https://github.com/miaohengming/studynote/tree/mai ...

  5. ViT和MAE模型结合初探

    介绍 transfomer在NLP领域的应用已经非常广泛,但是在CV领域的应用还比较少,主要是因为CV领域的数据是二维的,而transfomer是基于序列的,因此需要将二维数据转换成序列数据,这就是V ...

  6. QT的基础设置(菜单栏、状态栏、任务栏。。。。)

    Qt [1] 是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.下面介绍QT的基础配置 1 ...

  7. .NET 8 中利用 MediatR 实现高效消息传递

    前言 MediatR 是 .NET 下的一个实现消息传递的库,轻量级.简洁高效,用于实现进程内的消息传递机制.它基于中介者设计模式,支持请求/响应.命令.查询.通知和事件等多种消息传递模式.通过泛型支 ...

  8. 【爬虫实战】——利用bs4和sqlalchemy操作mysql数据库,实现网站多行数据表格爬取数据

    前言 此篇接上一篇的内容,在其基础上爬取网站的多行表格数据,以及把数据写入到mysql数据库中 目录 一.定位表格查找元素 二.提取数据 三.写入mysql数据库 四.附录 一.定位表格查找元素 首先 ...

  9. springjdbc处理nvarchar

    当我们使用spring-jdbc来做持久化时(注意不是spring-data-jbc),有时候一些特殊字符存入数据库时会用到nvarchar.nvarchar2这种类型(比如存放化学式,如CO₂等), ...

  10. Python 潮流周刊#67:uv 的重磅更新(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...