单刷 3 届 Hackathon,朝着抱负中的数据库动身丨TiDB Hackathon 选手访谈
TiDB Hackathon 2022 正在炽热报名中,截止现在现已收到 230+ 位参赛者报名,组队近 60 组。想必各位选手现已摩拳擦掌,开始预备自己项目的 RFC 了。在等待竞赛日的这段时刻,TiDB 社区采访了多位 Hackathon 参赛选手,经过访谈为咱们共享一下他们对 Hackathon 的了解和感悟,一起探讨开源给他们的个人日子和作业带来了哪些改动。当然,作为老选手,也会有极端珍贵的参赛经历共享。现已报名参与本届 Hackathon 的选手或是对 Hackathon 感兴趣的小伙们,赶紧看过来!
今日与咱们见面的参赛选手是现在在南京邮电大学读研三的陆涣冰同学,其实他的专业方向本来是卫星通信,但心里却十分热爱计算机底层技能,业余时刻底子 all in 在开源分布式数据库上。
涣冰同学与 TiDB Hackathon 的缘分源自研一那年:其时看到竞赛的信息后就十分想参与,但苦于自己技能水平不行,一起也没找到人组队,差点错失。幸亏其时社区的运营同学给了许多鼓励,并阐明个人参赛也是规矩答应的,这才被引入了 Hackathon 这条路。之后涣冰就一发不可收拾,研一、研二、研三连续三届都参与了 TiDB Hackathon。
以下为采访记载:
Q1:为什么挑选单刷的方法参与 TiDB Hackathon?
**陆涣冰:**其实单刷主要是因为自己想做的一些东西,关于许多人而言比较抽象,比较困难。举例来说,我上一年做的题目便是用 eBPF 去加速 TiDB 的底层存储途径。这个项目可能需求比较多的底层常识的铺垫,其时问了一圈发现没人对此感兴趣,最终仍是自己一个人参赛。其实拿不拿奖无所谓,玩得高兴就好。 参与 TiDB Hackathon 帮我整个研究生的三年开了一个头,之后我又参与了各种开源的竞赛,比方阿里的天池数据库大赛、 open Euler 高校开发者大赛等等。
我能敞开这条路要感谢两个人。榜首个人便是其时的社区运营 yanqing,她对我有某种程度上的知遇之恩,如果没有她我后边的这些阅历应该都不存在。第二个人是其时在 P 社实习时的 mentor 施闻轩,他关于我在技能上了解的影响是比较深远。
Q2:最早是在什么时候对编程感兴趣的?
**陆涣冰:**我本科的专业是网络工程,研究生的专业是信息网络,乍一听起来好像都是计算机学科的分支。那时候其实走了一段弯路,其时整个人掉进了安全的圈里,觉得黑客好酷,什么病毒、逆向都觉得十分酷。可是在深化学习了安全一段时刻,就感觉做安全好玩归好玩,可是真的要把这个作为职业,心里感觉仍是缺了一点什么。在 2019 年 2 月 1 日,那天是我的生日,所以我印象特别明晰,在跟朋友聊天时,我问自己今后确定要做安全了吗?仍是想更深化地写代码?因为其时身边许多做安全的朋友仅仅敲敲命令行跑跑脚本,感觉中国的安全确实青黄不接,厉害的确实十分厉害,但菜的实在是太菜了。那时候我这方面的技能,不谦虚地讲能够说是登峰造极了,可是写代码的功底仍是一塌糊涂。 和来自美团、百度的一些圈内朋友聊了聊,他们主张能够考虑一下前端业务运用开发或编译器、数据库、操作体系等更底层的开发。其时也是年少无知,就说要不学个数据库吧。于是从那天就一直学到了今日,然后就发现一入数据库深似海,这儿面的东西实在是太巨大了。不仅要有体系常识,还要触及编译器的常识,分布式的常识。伴随着这个学习进程,自己编码的水平也逐渐上来了。 说实话,身边除了自己,再也找不到第二个人做软件开发或许数据库开发。平常在学校的教研室里底子清一色都是前端开发,这三年来,就我一个人坐电脑前自学了三年。在接触到 PingCAP 时,有一种忽然找到安排的感觉。
Q3:开源带来的乐趣或收益是什么?
**陆涣冰:**学习数据库的时候其完成已对开源有了一定的认知,底子上 99% 的常识悉数来自于开源,无论对操作体系仍是对计算机体系的了解,底子都是构建于开源软件之上的。 榜首次接触 Linux,我发现这不便是我想要的操作体系?咱们都能改,都能用,改完还能 push 进项目里,开放给他人用。某种程度上开源能够汇聚全人类的才智去做一些工作。当然开源协作也会有许多问题,比方贡献的代码好不好,有没有漏洞,能不能和他人达成一致协商等等。有些项目写一半甚至不写了,开发者跑了,撂挑子了,这都很常见。包含开源项目的商业化,哪些拿过来能够做出自己的东西,哪些能够二次开发拿去卖,哪些行为是违规的,都需求开源参与者去考虑。
但那时我还仅仅开源的运用者,到了读研之后,借由数据库才渐渐把手伸得更远一点,开始把自己的代码贡献给他人。
Q4:TiDB Hackathon 与其他竞赛在体会上有什么区别?
**陆涣冰:**那实在是太多了。榜首仍是人,PingCAP 这边的小帮手实在是太热心了,作业做得十分好。我参与了三年,底子上会和每一届的小帮手成为朋友。第二点是 Hackathon 的所有项目都构建在 TiDB 之上,TiDB 有十分多的文档,有关于内核、原理的解读,我以为这点在众多参与过的竞赛、项目中能够说是最优秀的。这些作业大大减少了开发者想深化了解 TiDB 所需求的时刻。举个例子,我在参与某个竞赛的时候,他们就干巴巴地放出赛题以及代码结构,剩下就悉数交给你自己了,十分不容易上手,新手十分难做。而 TiDB 的源码与文档能够帮助开发者在竞赛中减少十分多的时刻。 也说说不足,我现已参与了三届,感觉其实有许多 idea 都是前面现已做过的,总会被不断掏出来翻新。主张官方能够把过往的项目整理出来,避免后边的重复。上一年有人说 Hackathon 是不是现已没有太多 idea 能够提了,其实我以为随着 TiDB 的开展,加了许多新的 feature 后 TiDB 现已变得越来越杂乱,咱们原本关于 TiDB 3.0、4.0 的了解放在 6.0 上可能就不适用了,需求再花大精力去做一些有比较有意思的东西。但这可能就需求花很长时刻读源码,深化了解 6.0 的规划,这关于外面想参与的人来说就十分困难,所以他们才会说能做的变少了。其实不是变少了,是难度变得太高了,花费的时刻本钱更高了。
Q5:作为老选手,能不能给新选手共享一下 Hackathon 创意的创意?
**陆涣冰:**其实我有一个主意,有一天咱们能把编译器、数据库、操作体系打通,把数据库直接放在与操作体系相同的等级上去。我的所有创意一直都是环绕这个希望动身的,不要为了竞赛而想点子,而是为了做出自己抱负中的那个数据库,让现在的数据库朝着抱负中数据库动身,看看还有什么缺的当地,一步一步完成。 我本年的思路其实和东旭之前的主意很类似,TiDB 后端现在存储引擎用的是 target 编码,从前计算机如果出了问题,都能够经过增加一层中间件或许中间层来解决。那我就想能不能增加这样一个中间层,把 TiDB 和 TiKV 解耦,让后边的存储引擎能够无缝切换。这是我本年想做的工作,可是不知道能不能做成功,做成什么姿态。 Linux 内核进入 6.2 版本之后, Rust for Linux 底子上就能安稳了。当 Rust 进入 Linux 内核之后,能和数据库带来更深层次的互动。这个便是我讲的把操作体系与数据库放在同一个 level,其实一直在朝这个目标在走。
Q6:本年是你第三次参与 TiDB Hackathon,你觉得这些年有哪些变化?
**陆涣冰:**作为一名底层开发者,TiDB Hackathon 最招引我的便是比较硬核的技能,比方 TiDB 先进的存储引擎、高效的性能,它能勾起咱们的好奇心,去发掘一下这个数据库究竟牛在哪。 如果是关于前端开发者而言,TiDB Hackathon 对他们的招引便是借由 TiDB 能去开发一些有意思的运用,比方说无缝切换,比方更 native 的云原生基础组件,甚至替换 Kubernetes 里的某些功能等等。 我看到本年的赛制发生了一些变化,比方上一年大多数竞赛环节都安排在 48 小时里,初赛、决赛辩论,时刻安排得满满当当。但本年主办方把初赛提早了,这能让选手们预备得更充分。参与 TiDB Hackathon 的大部分选手都是有作业经历的,或许是有 TiDB 运用经历的。他们关于这个数据库有着十分深的了解,能够借由 Hackathon 的机会把一些 actions 提早给做了。可是关于外面的学生或许不是太熟悉 TiDB 架构的人而言,竞赛周期的延长就十分有意义了,他们能够有更足够的时刻去阅览源码或许阅览文章,加深了解,能把 demo 做得更好一些。我榜首届参赛时连 demo 都没有,底子来不及做。 另外,其实这些年我发现身边做底层开发的小伙伴虽然越来越多,但仍旧是杯水车薪。更多的人仍是运用开发者,他们关心如何用数据库,而不是开发数据库,所以运用开发这个赛道的增加就很有意义了。运用开发者能够尽可能发挥,用这个数据库做出一些十分有意思的运用,展现出 TiDB 的更多可能性。
Q7:参赛经历共享
**陆涣冰:**想 idea 的时候千万不能闭门造车,要集思广益,收集一下已有的 RFC 或许 AskTUG 论坛里的一些问题,看一看 TiDB 的痛点在哪儿;再从评委的角度去想一想,是不是能榜首时刻 get 到你的主意。
我其实还没正式开始写 RFC,我的习惯是先把主意写在纸上,确定好了再腾到电脑上。写 RFC 首战之地是要标明你的目的,做这个东西是为了解决什么问题;其次描绘一下项目的背景,让评委能理解这个项目的定位是在 TiDB 的哪一个技能分支里边;除此之外,要把图画好,这样才能讲好你的故事。我榜首次 demo 都没做出来,所以辩论的结果也就不尽善尽美。第2次辩论确确实实把这个东西做出来了,做得是不是完美其实没有关系,大部分选手时刻都相同严重,关键在于能把你想做的工作、要做的工作、现已做过的工作讲理解就 OK 了。至于什么花里胡哨的画图、图表、效果,都是锦上添花的东西。
关于如何规划 RFC ,能够参阅这儿:
asktug.com/t/topic/903…
我从本科到现在,参与了百余场竞赛,并且每一场都是单刷。其实参与这些竞赛的初衷是想把技能学好,想能为他人再做点什么工作,能做出来一些更有用的东西当然最好,不会太过于重视奖品、名次这些工作,更多仍是重视于自己的项目和主意有没有完成。即使没有得到评委的认可,也是自己花时刻和精力做出来的,这些写过的代码,关于自己的提升是 100% 是有帮助的。
看过涣冰的阅历,你心动了吗?点击文末阅览原文了解更多赛事概况!