专栏首页中间件兴趣圈我的另一种参与 RocketMQ 开源社区的方式

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

首先先“SHOW”一波我在 RocketMQ 开源社区所获得的成就:2019年RocketMQ社区授予我优秀布道师荣誉称号,证书很高大上,奖品丰厚哦。

布道师是什么?开源项目不是都在追求如何成为一名 Committer?其实这个就是参与开源项目的两种不同方式。如何参与一个开源项目,容我慢慢道来。

1、与 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 这些可以后续在需要使用时再去专门学习,有针对性的学习,结合使用需求,或许学习动力更强劲,学习效率更高效。

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

  • 看看官方文档,特别是设计手册,从整体上把握其设计理念。
  • 写写源码分析类文章,从整体上把控这个框架,这个花费时间较多,如果框架正在起步阶段,不建议该方法;如果框架比较成熟,非常建议采用该方法。
  • 尝试看看开源项目中的 issues,看能不能解决,从问题入手,快速融入该项目。
  • 尝试写写单元测试用例,测试驱动开发,借此学习该框架。

后面的事情就是坚持不懈,朝着目标不断前进,中途可以放慢速度,但千万别放弃,因为只有坚持,才能胜利,只要前进,就离目标更近。

参与开源,一个最基本的条件是拥有大量的连续时间,想要成为一个开源框架的 Committer ,唯有坚持不懈,持续投入,持续产出。

布道师与代码贡献者都是参与开源项目的方式,大家可以结合自己的实际情况选择不同的方式,都能为一个开源社区贡献自己的力量,也能得到开源社区的认可,间接打造自身影响力,最终助力职场。

最后再次感谢RocketMQ社区对我的鼓励,最后用我的一句座右铭与大家共勉:心动不如行动,越努力越幸运,唯有坚持不懈。

原创不易,如果对你有所帮助请你为本文点个【赞】吧,这将是我写作更多优质文章的最强动力。

本文分享自微信公众号 - 中间件兴趣圈(dingwpmz_zjj),作者:丁威

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Apache RocketMQ 社区创建和协同创新的故事 | 赢在Apache系列

    ‍‍‍精英制、慈善机构、纯粹的个人志愿者、至今仍然是一个虚拟组织、拥有超过 350 个开源项目、有 3255 个提交者为 Apache 的项目做出了贡献.......

    开源社
  • RocketMQ 在联想大数据中的应用简析

    众所周知,RocketMQ 作为一款分布式、队列模型的消息中间件,具有以下特点:

    Spark学习技巧
  • 将 Flink 融合进消息系统,RocketMQ 为什么选择了与 Kafka 不一样的路

    8 月 13 日,RocketMQ 迎来了 5.0 版本,这是继 2017 年发布 4.0 版本之后时隔 5 年的一次重大更新。5.0 版本进行了架构重塑,新增...

    深度学习与Python
  • 七位腾讯技术专家,全面解析七大项目开源实践与社区治理经验

    ? 2021第六届中国开源年会 (COSCon'21) 召开在即,作为开源界备受关注的盛会之一,今年大会将采用N+1的模式(1个线上+N个线下分会场,分会场现...

    腾源会
  • RocketMQ与Kafka对比(18项差异)

    转自:https://github.com/alibaba/RocketMQ/wiki/rmq_vs_kafka 淘宝内部的交易系统使用了淘宝自主研发的Noti...

    Albert陈凯
  • 盘点那些走向世界的中国项目

    Kylin™是第一个成为Apache顶级开源项目的中国作品。它是一个分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模...

    IT大咖说
  • Apache RocketMQ QuickStart

    RocketMQ作为一款分布式的消息中间件(阿里的说法是不遵循任何规范的,所以不能完全用JMS的那一套东西来看它),经历了Metaq1.x、Metaq2.x的发...

    一个会写诗的程序员
  • 探秘RocketMQ分布式事务消息的设计原理

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

    lyb-geek
  • Kafka、RocketMQ、RabbitMQ、ActiveMQ比较MQ消息队列的技术应用Kafka、RocketMQ、RabbitMQ比较消息队列选择建议

    以及实现了JMS(Java Message Service)标准的OpenMQ。

    闵开慧
  • RoP重磅发布0.2.0版本:架构全新升级,消息准确性达100%

    ? 导语 | 日前,腾讯云中间件团队联合StreamNative社区正式发布了RoP 0.2.0版本,该版本在架构上全新升级,用户在使用中可以完全避免消息丢失...

    腾小云
  • RocketMQ底层原理和源码解析

    在2007年的时候,淘宝实施了“五彩石”项目,“五彩石”用于将交易系统从单机变成分布式,也是在这个过程中产生了阿里巴巴第一代消息引擎——Noti...

    肉眼品世界
  • 网易云音乐的消息队列改造之路

    网易云音乐自2013年上线后,业务保持了高速增长。云音乐除了提供好听的音乐外,还留下了我们在乐和人上的美好回忆。本文整理自网易云音乐消息队列负责人林德智在近期 ...

    哲洛不闹
  • RoP重磅发布0.2.0版本: 架构全新升级,消息准确性达100%

    ? ? 导语 日前,腾讯云中间件团队联合StreamNative社区正式发布了RoP 0.2.0版本,该版本在架构上全新升级,用户在使用中可以完全避免消息丢失...

    腾讯云中间件团队
  • 『互联网架构』软件架构-rocketmq之初识消息中间件(60)

    基于公司内部开源共建原则, RocketMQ 项目只维护核心功能,且去除了所有其他运行时依赖,核心功能最 简化。每个 BU 的个性化需求都在 RocketMQ ...

    IT架构圈
  • 【阵容扩大】3位腾讯Maintainer 加入 Apache Pulsar生态项目RocketMQ-on-Pulsar

    ? ? 导读 近期,腾讯联合 StreamNative 开源 Apache 软件基金会顶级项目、分布式消息流平台 Apache Pulsar 生态项目RoP ...

    腾讯云中间件团队
  • 腾源会成为开源社年度战略级合作伙伴

    ‍‍ ? 开源社是一个在国内外开源界深具影响力、厂商中立、纯志愿者组成、非营利的开源社区联合体。开源社专注于开源治理、国际接轨、社区发展和开源项目。开源社倾...

    腾源会
  • 软件架构-rocketmq之初识消息中间件

    1.Provider提供方:服务提供者。2.Producer生产者:创建和发送JMS消息的客户端。3.Consumer消费者:接收JMS消息的客户端。4.Cli...

    IT架构圈
  • 如何从RocketMQ企业版迁移Apache RocketMQ (一)

    近期很多客户在咨询如何从RocketMQ企业版迁移到标准的Apache RocketMQ。基于此,我做了一下的第一版的Java代码Demo,来尝试总结一些迁移的...

    Yagr Xu
  • 浅谈消息队列 2

    JMS的客户端之间可以通过JMS服务进行异步的消息传输。API是一个消息服务的标准或者说是规范,允许应用程序组件基于JavaEE平台创建、发送、接收和读取消息。...

    小蜜蜂

扫码关注云+社区

领取腾讯云代金券