专访|开源之夏最佳质量奖 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:为参与开源之夏的学弟学妹提供一些经验与建议吧
黄章衡:我觉得最重要的是敢于迈出第一步吧,身边有一些同学确实有参与开源的想法, 但是总会因为怀疑自己的能力导致最后不敢参与。我觉得,只要敢迈出第一步, 并且坚持不懈,在社区前辈的带领下,完成一个项目并不是什么难事的。
专访|开源之夏最佳质量奖 Apache RocketMQ Committer 黄章衡的更多相关文章
- Apache RocketMQ 正式开源分布式事务消息
近日,Apache RocketMQ 社区正式发布4.3版本.此次发布不仅包括提升性能,减少内存使用等原有特性增强,还修复了部分社区提出的若干问题,更重要的是该版本开源了社区最为关心的分布式事务消息, ...
- 【Apache RocketMQ】RocketMQ捐赠给Apache那些鲜为人知的故事-转自阿里中间件
序言 今年的双十一对阿里巴巴中间件消息团队来说,注定是个不平凡的日子.在这一天,稳定性小组重点攻克的低延迟存储解决方案成功地经受住了大考.整个大促期间,99.996%的延迟落在了10ms以内,极个别由 ...
- Apache RocketMQ分布式消息传递和流数据平台及大厂面试宝典v4.9.2
概述 **本人博客网站 **IT小神 www.itxiaoshen.com 定义 Apache RocketMQ官网地址 https://rocketmq.apache.org/ Latest rel ...
- 前端开发的使用服务器环境开源项目 D2Server 可替代Apache
推荐一个前端开发的使用服务器环境开源项目 D2Server 可替代Apache 攻欲善其事,必先利其器.前端开发,编辑器我们有了Sublime Text2,配置Server环境用……你可能会选择A ...
- Apache RocketMQ在linux上的常用命令
Apache RocketMQ在linux上的常用命令 进入maven安装后的rocketmq的bin目录 1.启动Name Server 2.启动Broker 3.关闭Name Server 4 ...
- 各种开源协议介绍 BSD、Apache Licence、GPL V2 、GPL V3 、LGPL、MIT_转
转自:各种开源协议介绍 BSD.Apache Licence.GPL V2 .GPL V3 .LGPL.MIT 现今存在的开源协议很多,而经过Open Source Initiative组织通过批准的 ...
- 问题排查之'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 ...
- Apache RocketMQ 消息队列部署与可视化界面安装
一.介绍 Apache RocketMQ是一个分布式.队列模型的消息中间件,具有低延迟.高性能和高可靠.万亿级容量和灵活的可扩展性.核心组件由四部分组成:Name Servers,Brokers,Pr ...
- Apache RocketMQ 的过去、现在和未来 原创: DataPipeline DataPipeline数见科技 前天
Apache RocketMQ 的过去.现在和未来 原创: DataPipeline DataPipeline数见科技 前天
- 四大开源协议比较:BSD、Apache、GPL、LGPL(转)
转自: 四大开源协议比较:BSD.Apache.GPL.LGPL 本文参考文献:http://www.fsf.org/licensing/licenses/ 现今存在的开源协议很多,而经过Open S ...
随机推荐
- Jetpack架构组件学习(5)——Hilt 注入框架使用
原文: Jetpack架构组件学习(5)--Hilt 注入框架使用-Stars-One的杂货小窝 本篇需要有Kotlin基础知识,否则可能阅读本篇会有所困难! 介绍说明 实际上,郭霖那篇文章已经讲得比 ...
- BST 二叉搜索树 BinarySearchTree C++实现(递归/非递归)
目录 二叉搜索树 基本概念 常用结论 用途 二叉搜索树的性能分析 二叉搜索树的操作 查找 插入 删除 代码实现 BSTree.hpp test.cc 二叉搜索树 基本概念 二叉搜索树(BST,Bina ...
- [VS Code扩展]写一个代码片段管理插件(二):功能实现
@ 目录 创建和插入代码片段 代码片段列表 代码片段预览 代码片段编辑 自定义映射 默认映射 自动完成 项目地址 创建和插入代码片段 VS Code扩展提供了数据存储,其中globalState是使用 ...
- PySide6/PyQt开发经验总结(2) - 设置快捷键
Qt设置快捷键 本文仅供本人知识总结使用,所以内容会比较浅显,不喜勿喷. 目录 Qt设置快捷键 一.需要的类 QShortcut 函数: 二.设置快捷键 官方文档原文翻译: 我的理解: 一.需要的类 ...
- visual studio安装MFC模板
计算机图形学 奇怪的重点 需要单击选中使用C++的桌面开发 才会跳出右侧的选项 要么就是展开右侧的收缩
- Dev-C++ 安装教程
下载地址:https://sourceforge.net/projects/orwelldevcpp/ 下载完成,在指定的下载位置有一个安装包: 双击开始安装程序 安装是默认英文安装即可,在启动后可以 ...
- 5.5文件上传-WAF绕过
一.WAF绕过(明确有文件上传) 1.上传参数中,可修改参数 Content-Dispositin:一般可改 name:表单参数,不可更改 filename:文件名,可更改 Content-Type: ...
- Openstack-dashboard默认配额
创建实例不超过10个 方法一 修改配置文件 在使用openstack的过程中,默认创建的实例最多10个,这是因为配额默认实例就是10 所以我们需要修改配置文件/etc/nova/nova.conf中的 ...
- 海光 FTPM 运行报错:Fapi_Provision_Finish() ErrorCode (0x00060025) No EK certificate found.
使用的是海光 CPU 提供的基于固件的 FTPM,错误原因是海光没有给 TPM 提供相应的 EK 证书.从而导致Fapi_Provision()接口无法通过证书的校验.关于Fapi_Provision ...
- MDC – Work with Framework & Customize
前言 在 MDC – Material Design, Angular Material, MDC, MWC, Lit 的关系 中, 我有提到基于 MDC 的 Framework 生态有多糟糕. 但它 ...