我的另一种参与 RocketMQ 开源社区的方式

在2017年听到阿里巴巴将 RocketMQ 捐赠给 Apache基金会成为 Apache 的顶级项目,我内心是无比激动,因为终于可以一睹一款高性能的消息中间件的实现原理。

通过阅读 RocketMQ 官方文档,以下几个特别的点吸引了我的注意,让我下定决心深入研究一番。

  • RocketMQ 为什么性能高效,到底运用了什么“厉害”的技术

  • RocketMQ 如何实现刷盘(可以类比一下数据库方面的刷盘、redo、undo日志)

  • RocketMQ 文件存储设计理念、基于文件的 Hash 索引是怎么实现的

  • 定时消息、消息过滤等实现原理

  • 如何进行网络编程(Netty实战)

心动不如行动,下定决心后便开始了我的源码分析 RocketMQ 之旅,大概在4个多月的时间中连续发表了30余篇文章,从 Nameserver、消息发送高可用设计、消息存储、消息消费、消息过滤、事务消息等各个方面对其进行了体系化的剖析,边写边分享,边分享边传播,终于得到了机械工业出版社华章分社的杨福川老师的认可,邀请我出书。

在杨老师和张工的帮助与指点下,经过将近半年的努力,书稿基本完稿。

由于我当时是一位名不经传的新人,按照出版行业的惯例,需要找一些该领域内专家大牛帮忙做序或写写推荐语。

当时我是初生牛犊不怕虎,蹦出了一个非常大胆的想法,是不是可以联系 RocketMQ 官方的一些大佬,最终我直接锁定了 RocketMQ 创始人冯嘉大神,希望他能帮我作序推荐。

令人惊喜的是冯嘉大神非常平易见人,得知我的来意后,他说了这样一句话:“我是非常愿意为写书的朋友作序,但需要评估一下书稿的质量,如果质量OK,非常愿意效劳”。

我备受鼓舞,在和出版社初步沟通后,将试读稿件再加上消息存储整章的内容发给冯嘉大神后,经冯嘉大神认真审稿后,决定帮忙推荐作序,真的让我备受鼓舞。

随着《RocketMQ技术内幕》一书的正式出版上市,并得到广大读者朋友的认可,与官方的联系也越来越多,后面在 RocketMQ 中国社区负责人青峰大佬的筹备下,我还参与了 RocketMQ 官方社区的源码解析直播活动、官方文档审稿等工作,并在社区得到了不错的反响。

说到这里大家是不是觉得非常奇怪,是不是都认为你只是在写文章,写书,没有真正参与开源社区呀,没有贡献代码,这个算哪门子参与开源社区?

其实我一开始连我自己也没有意识到我正在参与一个开源项目,直到我在冯嘉大神为我写的序言中看到他给了我一个新的称号:RocketMQ布道师,从而才真正了解到参与开源的另外一种方式:做一个开源项目的传播者,让更多人更容易的使用它,即降低大众对它的使用门槛。

我后面也特意去查了一下开源项目的布道师是一个什么的角色,或者说什么样的人能被称之为布道师。个人的理解就是首先认可并热爱这项技术,并持续输出高质量的技术类文章、文档等有助于技术传播的素材,让更多人更容易理解并使用它。

有了新的称号,那就得更加努力,朝着优秀努力,在2019年我又陆续发表了20几篇关于RocketMQ相关的文章,这些文章含金量极高,不仅及时跟进了RocketMQ4.3之后的新特性:消息轨迹、ACL、主从切换等机制,更是发表了数篇实战类文章,详细指出在生产环境下一些使用误区,更是输出了几篇生产环境真实故障与解决方案。最终于2019年 RocketMQ 官方社区授予我优秀布道师荣誉称号。

RocketMQ 成就了现在的我,我也会继续努力,为传播RocketMQ尽一份力所能及的力量。2020年,继续努力。

2、如何成为开源项目的 Committer


有一些粉丝在问我,您对 RocketMQ 研究的这么深入,为什么不考虑贡献代码,成为一名 Committer 呢?这是因为参与开源项目需要具备一些基本条件,当下我的实际情况不符合,那成为一个开源项目的 Committer 有些什么条件呢?

  • 扎实的Java基础功底

一个开源项目的底层都会涉及到存储,这就要求具备一定的数据结构基础,JAVA集合框架中的类自然成为了我们突破数据结构最好的老师,其次是java并发,即多线程、并发容器、锁等课题,这方面可以好好学习一下JUC框架。最后最好是具备一些网络方面的知识,例如NIO、Netty。

  • 持续输出能力

成为一个开源项目的 contributions 非常容易,提交一个PR并被通过即可,甚至于提交一个文档被接受也同样可以,难的是持续贡献,最终被开源项目的PMC认为对该项目有着突出贡献。

我比较“苦逼”,在带娃方面我的资源只有我和我老婆,父母在老家无法分身,故下班后我没有连续的空闲时间专心投入一项任务中,而开源最需要的是精益求精,不只是需要完成功能,而是要编写结构优良的代码,设计所占据的时间比代码开发时间要多的多,故我个人认为我暂时不方便走代码贡献这条道路。但我零碎时间还是充足的,故现阶段我会好好利用这些零碎时间,继续通过写文章的方式为开源项目贡献自己的一份力量。

接下来我们回到本节的主题,那如何参与一个开源项目呢?

在参与一个开源项目之前,我觉得第一个最基本的步骤还是要打牢基础,这里的基础至少要包括 JAVA集合、JAVA并发(JUC)这两项,这是最最基本的,至少要阅读其源码,理解其设计理念,至于NIO,Netty 这些可以后续在需要使用时再去专门学习,有针对性的学习,结合使用需求,或许学习动力更强劲,学习效率更高效。

当具备一定的基础后,如何从零开始参与进开源项目呢?通常有如下几个方法:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

难道这样就够了吗?不,远远不够!

提前多熟悉阿里往年的面试题肯定是对面试有很大的帮助的,但是作为技术性职业,手里有实打实的技术才是你面对面试官最有用的利器,这是从内在散发出来的自信。

备战阿里时我花的最多的时间就是在学习技术上,占了我所有学习计划中的百分之70,这是一些我学习期间觉得还是很不错的一些学习笔记

我为什么要写这篇文章呢,其实我觉得学习是不能停下脚步的,在网络上和大家一起分享,一起讨论,不单单可以遇到更多一样的人,还可以扩大自己的眼界,学习到更多的技术,我还会在csdn、博客、掘金等网站上分享技术,这也是一种学习的方法。

今天就分享到这里了,谢谢大家的关注,以后会分享更多的干货给大家!

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

阿里一面就落马,恶补完这份“阿里面试宝典”后,上岸蚂蚁金服

image.png

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
WOVGy-1713692573750)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值