写点什么

Little-Wallace 和 Yisaer 的 Committer 之路

  • 2021-06-12
  • 本文字数:2951 字

    阅读完需:约 10 分钟

Little-Wallace 和 Yisaer 的 Committer 之路

Little-Wallace

Raft SIG 和 engine SIG 的 Committer 。本科专业是计算机科学与技术。毕业后在阿里巴巴做搜索引擎存储相关的工作,来到 PingCAP 以后开始做 TiKV 的存储引擎。

Yisaer

scheduling SIG 和 execution SIG 的 Committer 。本科专业是计算机,18 年毕业做后端程序员,后来做 k8s 相关的开发工作。19 年来到 PingCAP ,目前在调度组做研发。


Q

什么时候开始接触编程的?

Little-Wallace:我接触编程的时间比较晚,基本是读大学的时候,在大学期间写过一个 OJ(在线编程考试的网站)。

Yisaer:我从高中信息课开始接触编程,业余了解一些编程的知识,当时完全没想到未来会从事这方面职业。大学一开始我并不在计算机系里就读,那时候已经意识到我比较擅长并且也喜欢编程,所以就转专业转到了计算机系。


Q

有没有写过好玩的项目?

Yisaer:我写过最好玩的项目是我的毕业设计 https://github.com/Yisaer/Nest4J 。

它在一个非常冷门的领域里面,是在车床加工里作为材料的板材套量设计。这个项目特别有意思,但是做的人少,资料也特别少,做出来之前我都觉得没有信心,不过最终拿到了学校的优秀毕业设计。工作以后,我把这个项目开源了,陆陆续续不少人通过邮件的方式咨询我关于这个程序的使用方式和改进空间,其中不乏有来自 CNC 领域的专业人士,在这些交流中我也受益良多。


Q

如何了解到 TiDB 的?

Little-Wallace:第一次了解到 TiDB 是读大四的时候, PingCAP 的同学来我们学校做宣传,然后知道了 TiDB 这样一个产品。那时候我在数据库方面的知识比较薄弱,很少关注数据库底层的原理与实现。我之前以为 MySQL 也是分布式数据库,后来才知道只是一个单机数据库。原来 PingCAP 在做的是这么酷炫、这么超前的事情。但是刚毕业时我没有来到 PingCAP ,直到 18 年参加 PingCAP 举办的 Hackathon,才算是我第一次接触到开源项目。

Yisaer:我是先认识到申砾老师,然后才了解 TiDB 的。当时刷知乎看到申砾老师发的招聘信息,就私信他想去实习,可惜挂在了面试阶段。后来 2019 Kubecon 又看到贵司的分享,和 TiDB 社区的 Contributor 交流了关于换工作的想法,他推荐我来贵司,最后经过社招面试终于来到 PingCAP !


Q

第一次贡献 TiDB 感受如何?

Little-Wallace:第一次贡献是给 TiKV 提 PR ,需要别的同学来 Review ,然后再对代码进行细致的改进,这和以前的工作体验完全不一样。第一次给 TiDB 贡献是参加 PingCAP 举办的 Hackathon。我们做了一个监控的可视化的项目,监控微信的历史信息和整个集群的数据分布变化,把它做成图表的形式。经过比赛我对 TiDB 架构有了更深入的了解,在技术上学习到了很多,扩展了视野,收获非常大。

Yisaer:最开始我的工作内容是完善 TiDB 的周边工具,所以贡献 TiDB 代码其实是属于工作范围以外的兴趣研究。当时我对数据库和 TiDB 了解不多,希望通过贡献 TiDB 的方式来熟悉这个领域,还记得我的第一个 TiDB PR 是给 TiDB 的配置项修改一个默认值。


Q

贡献 TiDB 的动力是什么?

Yisaer:动力是在 TiDB 里解决问题非常具有挑战性挑战,并且很有意思。在 TiDB 社区,贡献者有等级机制,我逐渐在对应的 SIG 里从 Contributor 变成 Reviewer,再变成 Committer,这个过程让我非常有成就感。


Q

你在贡献中遇到的最大的困难是什么?

Little-Wallace:我在贡献 TiDB 过程中遇到的最大的一个困难是 TiKV 在测试过程中突然出了问题,日志里面的错误显示是 RocksDB 的 SST 的顺序错误。这个 BUG 我们排查了非常久,并且找了很多位同事帮忙查看问题,因为产生的错误非常的底层,而且难以复现,最后大家一起逐行分析错误 SST 文件产生前后的各种操作,再对比代码才发现了 RocksDB 的这个隐藏 BUG:https://github.com/facebook/rocksdb/issues/5913,这个过程令我非常难忘。

Yisaer:最大的困难是 19 年年中,我开始着手调查的一个 TiDB 读数据算子内存 OOM 的问题。这个问题比较难复现,而且我当时对那块代码也并不熟悉。做这个项目的同时还遇到了非常多次 go race 问题。另外由于读数据算子是 TiDB 中至关重要的环节,所以针对解决 OOM 的设计我们也展开了非常多次讨论。整个项目研究,设计,实验反复多次,耗时了将近  5 个月才最终成熟解决。


Q

你在贡献过程中最有成就感的事情是什么?

Yisaer:最有成就感的事情还是在解决上面提到的困难上,因为问题的复杂性,后面我又拉了 2 名 TiDB 的同事一起讨论。这个问题修复后,我们投稿了 2020 年的 percona live 并很有幸做了一次分享。虽然花了非常久的时间,但最终不仅解决了 TiDB 的内存管理问题,同时也能将我们的成果分享出去,非常有成就感。


Q

谈谈你对开源的理解。

Little-Wallace:我认为开源作为一种生产协作方式,从生产力的角度上来说是一场革命。它能把我们这些零散的力量组织起来,开发出很了不起的产品。从产品维度上来说,整个社区一起体验产品,能帮助产品试错,不断完善产品的功能。从技术角度上来说,把产品开源出去的同时,也在接纳整个社区的技术反馈,大家会立刻指出来产品技术上的不足,具有能够快速进步的优势。

Yisaer:我觉得开源就是结合群众的力量,将一件事做好并做到极致。这是我的理解,如果没有开源的话,可能也不会来到贵司,也不会有机会接触这么多的产品。


Q

你是一个开源爱好者吗?有没有给其他项目贡献的经历?

Yisaer:其实来贵司之前我是一个开源项目使用爱好者,给 Kubernetes 和 Istio 社区提了很多 issue,主要通过线下分享和线上博客的形式在社区贡献。来贵司后,会更加倾向通过代码的方式来进行贡献。


Q

有没有给社区小伙伴们的建议?

Little-Wallace:我觉得对于刚入门的开源爱好者,贡献时首先要了解这个项目需要你做什么。可能很多爱好者刚开始看到一个项目非常庞大,不知道做什么,或者从哪里开始做。我建议大家可以参加比赛,PingCAP 提供了像性能优化大赛、Hackathon 等活动,官方会有导师指导,在比赛中有明确的目标和方向,会比自己给项目做贡献简单方便很多。这样一方面可以了解项目,另一方面也锻炼代码能力。如果你有比较先进的 idea ,可以让社区帮助你一起完善和落地,不管对开发者还是对 TiDB 都是双赢。

Yisaer:我建议新人可以多和 TiDB 社区的开发人员交流。其实我作为社区成员很喜欢和 Contributor 们交流和互相学习。包括如果 PR 想要尽快被 Review ,也要多催一催我们。所以新人有问题可以在 Slack 或微信里找我们,相比 GitHub 渠道,Slack 和微信的反馈方式会更高效更及时。


Q

最后还有什么想要分享给大家的?

Yisaer:对于已经是 TiDB Contributor 的同学,我建议可以多参与了解 TiDB 的各个领域。我一开始是从 TiDB 的周边工具入手进行开发,后面来到调度组开始完善 TiDB 的调度工作。在业余时间我对 TiDB 和其他数据库的计算引擎也会花时间学习和参与代码贡献。我觉得多了解其他领域可以开阔自己的视野,对理解整个数据库产品和生态有非常大的帮助。所以社区人员以及我们内部人员,如果对什么项目有兴趣,就可以直接参与他们,这也是我非常喜欢贵司的一个地方。



头图:Unsplash

作者:3/23

原文:https://mp.weixin.qq.com/s/GfoME8wBn_dGUxGt4Rh0EA

原文:创造了不起 | Little-Wallace 和 Yisaer 的 Committer 之路

来源:PingCAP - 微信公众号 [ID:pingcap2015]

转载:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2021-06-12 08:001822

评论

发布
暂无评论
发现更多内容

MaxCompute执行引擎核心技术DAG揭秘

阿里云大数据AI技术

Go1.17正式发布--切片转为数组指针

草原狼

Go 语言

价值连城 图灵奖得主Yoshua Bengio约书亚·本吉奥的采访 给AI从业者的建议 John 易筋 ARTS 打卡 Week 60

John(易筋)

ARTS 打卡计划

Compose 列表

Changing Lin

8月日更

后Kubernetes时代的虚拟机管理技术之Virtual-Kubelet篇

谐云

k8s 虚拟机

解读短小精悍的 Then 框架

fuyoufang

ios swift 阅读代码 8月日更

Go语言chan实现原理,彻底搞懂chan读写机制

微客鸟窝

Go 语言 8月日更

如何理解 Java 多线程

HoneyMoose

如何找到程序崩溃的 “凶手” ?

神策技术社区

数据库 程序员 埋点

索信达控股: 银行对公业务数字化营销进阶攻略

索信达控股

史上最大DDoS攻击之争:这三次攻击,谁才是「最大」?

百度开发者中心

最佳实践 方法论 信息安全 案例分析 行业深度

Vue进阶(四十):ref ($refs) 用法详解

No Silver Bullet

Vue 8月日更

前端基础二之css篇

ベ布小禅

8月日更

又翻车了?列表点击事件采集那些你不知道的坑!

神策技术社区

数据库 大前端 后端 代码

webrtc Rtp/rtcp (1)

webrtc developer

富文本及编辑器的跨平台方案

vivo互联网技术

跨平台 编辑器 富文本

Java 为什么设计成 String 不能用 == 来进行比较

HoneyMoose

网络货运平台要智能,安全的数据底座少不了

华为云开发者联盟

数据库 华为云 物流 智慧物流 可视化追踪

OPPO数据湖统一存储技术实践

安第斯智能云

大数据 数据湖 存储

用Python爬取《王者荣耀》英雄皮肤数据并可视化分析,用图说话

Python研究者

8月日更

Android技术分享| 自定义ViewGroup实现直播间大小屏无缝切换

anyRTC开发者

android 音视频 实时通信 Android开发 大小屏切换

The Data Way Vol.2 | 做个『单纯』的程序员还真不简单

SphereEx

数据库 开源

大一一个学期学多少编程算正常?

沉默王二

编程

MySQL 系列教程之(六)DML 操作:数据的增删改

若尘

数据库 MySQL 数据库 8月日更

LeetCode题解:217. 存在重复元素,哈希表,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

基于昇腾CANN的卡通图像生成可在线体验啦!十分钟带你了解CANN应用开发全流程

华为云开发者联盟

ai框架 CANN 昇腾 昇腾AI应用 图像生成

七步实现列表点击事件的采集

神策技术社区

大前端 后端 代码

【LeetCode】学生考勤Java题解

Albert

算法 LeetCode 8月日更

从“人工”到“人工智能”,聊一聊本届东京奥运会的AI黑科技

行者AI

浅谈在探索数分之路上“数据思维”培养

小飞象@木木自由

数据分析 数据思维

老板不让用 AFNetworking,我该怎么办?

神策技术社区

大前端 后端 数据 数据采集

Little-Wallace 和 Yisaer 的 Committer 之路_语言 & 开发_PingCAP技术团队_InfoQ精选文章