95|95 后新生代 Committer 贺张俭(谈谈年轻人的开源观)
关于 Apache Pulsar 云原生时代消息队列和流融合系统,提供统一的消费模型,支持消息队列和流两种场景,既能为队列场景提供企业级读写服务质量和强一致性保障,又能为流场景提供高吞吐、低延迟;采用存储计算分离架构,支持大集群、多租户、百万级 Topic、跨地域数据复制、持久化存储、分层存储、高可扩展性等企业级和金融级功能。2022 年初,有一位大家都熟悉的年轻社区“老人”,来自华为云的贺张俭(GitHub 地址:@Shoothzj)正式入选 Apache Pulsar Committer。
GitHub 地址:http://github.com/apache/pulsar/
贺张俭,华为云 IoT 高级工程师,2017 年毕业于西安电子科技大学毕业,毕业后一直在华为云 IoT 部门进行 Java 方面工作,关注云原生、IoT、消息中间件、APM 等方向内容。
文章图片
值得一提的是,97 年出生的贺张俭是继张勇(2021 年 1 月中旬入选 Pulsar 社区 Committer)后,Pulsar 社区第二位最年轻的 Committer。“95 后” 年轻小将为 Apache Pulsar 开源项目注入了强大且充满活力的血液,新生代的力量不可小觑!
祝贺贺张俭成为 Apache Pulsar 社区 Committer!同时,我们也与贺张俭进行了采访,聊聊他与 Apache Pulsar 的故事。下面跟我们一起看看他的开源之路和精彩故事吧!
第一次系统地参加开源 物联网领域使用的消息系统常常需要满足以下条件:
- 满足海量 Topic 消息队列支持
- 支持多租户
- 部署方式支持容器化云原生
谈到我的第一个 PR,当时 Pulsar 2.5 版本没有 GC 日志的配置,但一般来说,做商用软件都需要该配置。因此我提出疑问并得到认可后,就去帮助修复 GC 日志方面问题。我仍记得这第一个 PR 合并后的激动心情 —— 因为我知道,接下来这个功能可能会有几万人去使用,会有几万人看到我的成果,参加开源社区的带来的成就感都是“公开透明”的。
可以说,相较于过去在其他开源项目社区提交零碎 PR 的体验,Pulsar 社区是我第一个投入时间最长、花费精力较多,并且代码质量和单侧驱动优良的规模化社区。
Committer 背后的贡献 我在社区中的主要贡献方向是 Java Client 和 Broker 的可靠性。除此之外,我在 Pulsar Go Client 也贡献了诸多 PR,由于主仓库大多使用 Java 语言,其他语言贡献相对较少,特性尚未拉齐,因此需要补充其他 Client 的特性。
我很关注 DFX(即 Desgin for Failure) 这方面的问题。华为注重软件可靠性和安全性,因此我们在调研 Pulsar 时针对很多不常见场景做了测试,比如多次重启测试,包括强制停机、物理机直接下线等。因此,在社区我也围绕可靠性和安全性相关的特性做了一些贡献。
开源社区 VS 工作环境 “Volunteer” 机制 刚接触社区时,我并不是非常适应 Volunteer 模式的社区环境。不同于在工作中遇到问题找相关负责人即可解决,社区内的成员之间没有很强的利益关系。开源社区内的互帮互助、问题解答都是出于热心和自愿。因此在遇到紧急情况寻求社区的帮助时,需要将问题描述清晰,罗列清楚前因后果,否则可能无法得到及时地解决和反馈。出于此,我养成了在提 issue 或在社区提问时完整描述上下文的习惯,提高沟通的效率。
验证与测试 工作环境和社区给我带来的差异感还在于测试。在大部分工作中,产品设计的流程是产品经理——工程师——测试,而开源社区在提交 PR 的时候并没有完整的功能测试,也没有大规模的集成性测试,只有在版本发布时才会由 PMC 成员与一些社区的开发者、用户进行验证。在这样的协作方式下,反而驱动社区在单元测试方面做的很好:只要在单元测试中发现问题,除非存在复杂度高或单元测试不适用的情况,80% 的问题修复都会由单元测试覆盖。这样的理念与流程对我的理念、我对团队的要求影响很大,我常常在工作中思考集成测试与单元测试兼容并蓄、取长补短的可行性、有效性。我正在努力践行,也鼓励更多小伙伴在修复 bug 上努力实践单元测试。
代码编写与审核 工作上与社区中的代码编写规范也是不同的。很多公司都有自己严格的代码编写规范,而在社区没有禁止,且没有明确优势或充分理由的情况下,已有代码会保持原样不动。
同时,工作与社区的代码提交和 review 风格完全不同。工作上大家习惯一次性提交代码进行统一测试。相反,在社区要求 PR 主题清晰,需要拆分代码来提交,代码量少、Git 记录更优雅,拆分后的 PR 更容易被发现其中存在的问题,及时得到反馈建议, 这样提 PR 的方式让我收获良多。
开源:由浅入深 社区里来自海内外的小伙伴都很热情,不吝分享自己的经验和技术见解,让我积累了许多有意义的经验。现在,我能感觉到 Pulsar 项目的 bug 修复工作比两年前更加困难:社区在发展,Pulsar 在升级,主要场景修复越来越完善,很多问题都得到了解决。接下来,如果想通过社区找 bug、修复 bug、完善文档来作为参与社区的开始,则需要投入更多精力学习流程。社区门槛在提高,大家需要多多学习。
关于入门学习 Pulsar,我总结出以下三方面建议:
- 针对目前社区只有
help wanted
的问题,社区可以建设文档和 issue 分类的机制,进行难度标记,不论是新人还是老手均可根据自身能力进行任务选择。 - 刚入门的小伙伴可以按照社区操作文档探索相应功能,依次体验,并在发现问题时立即提出来,如代码不能操作、文档写错等,大胆尝试解决,如此能够更快进入社区。
- 如何读源码?首先注意不要一行一行去读,因为阅读速度赶不上代码更新的速度。目前 Pulsar 有几十万行代码,伴随提交量增加,代码更新很快,同时现在模块划分也不同了,和过去版本有所区别。因此大家应把握模块之间关系,抓住主要链路。如果可以,应进行单步 debug,串行整个流程,然后读自己感兴趣的部分,此时可以深入读代码。
值得一提的是,2021 年我所在团队只有我一个贡献者,而今年,我们团队计划付出更多的人力资源来更好地为社区做贡献,同时我也希望能通过自身影响力引导大家为社区多多做贡献。
致谢 感谢 Pulsar 社区提供这样一个开放、有活力的平台让大家一起贡献代码,共同成长,我从中受益匪浅,深刻感受到贡献带来的自我认同价值。现在社区有 500 多名 Contributor,我相信社区将来会有越来越多贡献者参与进来,开源气氛越来越活跃。同时,感谢团队领导对我和社区合作工作的支持。
采访点评 贺张俭是一个很热爱分享的人,他多次参与Pulsar Summit Asia 2020、ApacheCon Asia 2021、Pulsar Meetup 等行业大会和社区活动,积极分享个人和团队在 Apache Pulsar 方面的实践。在采访中,我们也能从贺张俭侃侃言谈中感受到他对开源、对 Apache Pulsar 这个项目的热爱和投入,感谢他给大家带来他眼中不一样的 Pulsar 开源社区体验和认知。
加入 Apache Pulsar 社区 参与开源,可以获得公司及社区内外的认可,结交来自各个领域、志同道合的小伙伴;同时也可以提高个人影响力,促进个人发展。参与开源不是码农的专属,社区、文档等各个方面都可以让大家发挥一技之长。
作为全球性开源项目,截至目前,Apache Pulsar 已拥有 513 名贡献者、10.5K+ Star 、2.7K+ Fork 。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache Pulsar 项目的不断发展与前进。
Apache Pulsar 官方贡献指南
受访:贺张俭@华为云相关阅读
采访:鸡排@StreamNative,Haiqi@StreamNative
- 博文推荐| Pulsar 客户端编码最佳实践
- 最佳实践| Apache Pulsar 在华为云物联网之旅
- 实力与颜值并存 —— Apache Pulsar PMC 成员刘昱专访
加入 Apache Pulsar 中文交流群
文章图片
点击 链接 ,为 Pulsar 点赞!
推荐阅读
- SpringMVC前后端分离交互传参详细教程
- spring|java springboot前后端不分离项目
- java后台管理系统|java后台管理系统_基于 java的spring boot 和Vue ElementUI的在线考试后台管理系统
- demo|基于spring、mvc和easy UI的驾校后台管理系统
- NutUI 3.0 助力企业业务售后门户建设
- 数字后端|2022英伟达(NVIDA)实习生笔试(ASIC PD岗位)
- 后台管理系统自己手写页面布局
- 管理系统页面布局|管理系统页面布局 html,25 个精美的后台管理界面模板和布局
- 9.后台管理系统主页面布局以及左侧导航栏设计
- .Net Core 开发电商后端API 从0到精通吃透RESTful