乐趣区

关于数据库:从用户到开发者是一种思维进化过程-访-StarRocks-Committer-周威

身处技术创新驱动的时代,只有凋谢合作能力带来巨大进步,发明不凡成就。

StarRocks 社区的发动和倒退,正是立足于各个开发者的“奉献”和“集智”。

周威,腾讯游戏高级工程师,对 StarRocks、MySQL、Ceph、k8s 等有比拟深刻的了解。他有着“技术匠人”典型的思维洞察力,认为技术开发就是把本人的想法翻译给计算机听。在开源社区实现了从用户到开发者的思维进化的他,为 StarRocks 社区奉献了 serverless 等多项性能的优化和翻新。

近期,通过 StarRocks 社区 PMC 提名与投票,周威承受邀请,正式成为 StarRocks 我的项目的 Committer。

他在我的项目上的次要奉献有:

  1. 主导了 serverless 的 compute node 的设计,并且实现了 BE 局部的性能
  2. 开发了 window_funnel array_contains_all 等函数
  3. 实现了 IEG 局部 StarRocks 代码 reivew 工作
  4. 推动了 k8s-starrocks-operator 的设计和奉献工作
  5. 帮忙腾讯 IEG 在大规模应用 StarRocks 做了大量 trouble shooting 工作

后续,周威还会在以下几方面持续奉献:

  1. IcebergV2 source connector 的开发
  2. k8s-starrocks-operator 的欠缺
  3. Iceberg sink connector 
  4. compute node 多集群

作为技术畛域资深的开发者,你对这个身份是如何了解的?

我认为是某种意义上的“翻译”,就是把本人的想法通过计算机能了解的程序语言来表达出来,从而让计算机了解并执行。对开发者来说,如何造成本人的想法、精确简练地表达出来是外围能力。

谈谈你的技术开发经验

毕业后就去了华为,在华为开发网络协议,搞 TCP/IP 协定栈。起初到腾讯做存储,一开始是做 MySQL,前面咱们基于 MySQL 做了分布式的存储引擎 Spider。其实理念上和 StarRocks 比拟相似,是用 hash 的形式来依照某列做分桶后发给不同的后端。

工作中的第一个 Commit 就是做的 MySQL 的主备同步 Binlog 压缩性能,这个性能其实早就有社区成员提出来要做,正好腾讯游戏外部也有需要,就接过来了。过后在社区里和大家在实现计划上争执了很久,不过最终还是我压服了他们,依照我的思路实现了这个性能。

再之后就转做通用的分布式存储 Ceph,Ceph 这种通过两级架构(mon-osd)的构建形式给了我比拟大的启发。在云原生的趋势之下,腾讯游戏也踊跃地想把一些工作搬到 k8s 加容器之上,我就搞了一段时间的 k8s。直到剖析引擎选用了 StarRocks,我就又持续回到了存储这块来。

如何踏上了开源之路?有什么开源社区的经验能够分享?

第一次接触是在大二上操作系统课期间,我把本人的笔记本装成了 Ubuntu。过后还能申请装置光盘,后果他们真的给我从英国寄了过去。在笔记本上用 Linux 问题还比拟多,就始终须要网上问,社区的人也比拟热心,解决了不少问题,本人也就逐步参加进去了。

所以社区新人不要有畏惧心理,大部分社区是很欢送大家参加的,只有留神发问时尽量提供比拟全面的信息、精确形容景象。迈出了第一步,当前就会越来越顺。比方我第一次给 Linux 内核发 patch,邮件收回去之后没多久就有人回复并且提了 review 意见,来回改了 5 个版本,包含代码格局验证这种问题都有人急躁解答。

(周威、他的爱人和 Linux)

参加开源社区给我带来了从用户到开发者的思维转变。之前遇到问题,个别是提一个 Issue,期待着有人能解决问题。前面就会想:为什么会有这个问题?能不能自己解决?如果能够的话就会本人提 PR,我比拟享受 PR 被合并的过程。

(周威在开源社区提的第一个 bug)

你在大数据行业、OLAP 产品方面都有怎么的经验和心得?如何成为了 StarRocks Committer?

做 OLAP 是一个须要在性能和老本两方面做取舍的过程。很显著的,如果咱们不在乎老本,总能够通过堆机器或者提前计算等形式来晋升性能。但事实又逼迫咱们必须一直压缩老本,在肯定老本条件下达到能够承受的性能。

基于想节省成本的奢侈想法,并联合了之前做容器的教训,就产生了一个想法:能不能把 StarRocks 放到容器外面呢,从而做到按需扩缩容,不应用的工夫就能够把资源开释掉。于是我就提出了把计算能力抽出来独自拆分出一个 CN 节点,并实现一个配套的 Operator,从而实现了 serverless 的能力的想法。这个计划做完当前就把这个性能提交到了 StarRocks 社区,失去了认可,从而成为了一名 Committer。

作为最早退出 StarRocks 社区的开发者之一,遇到过哪些问题?最有成就感 / 取得感的事件是什么?

最后遇到的次要是稳定性问题,包含 BE crash、FE 卡死等,过后因为对 StarRocks 没那么相熟,所以破费了一些工夫。目前这些问题曾经在社区解决了。

最有成就感的事件是做的 serverless 性能被更多小伙伴们去一起应用,大家反馈问题并参加到解决的过程中。

在应用 StarRocks 的过程中,我进步了本人定位和解决问题的能力。在浏览代码时,StarRocks 不少执行打算的优化形式启发颇多,在业务优化 SQL 方面带来了不少帮忙。

说到“发明”,你会想到什么?

比起“发明”,我更喜爱的是“翻新”这个词语。比方容器这个概念,其实容器所依赖的次要技术(namespace 和 cgroup)很早就在内核实现了,Docker 做的就是把这些技术给组合起来,搞出了容器的实现形式。在我看来,比起间接“发明”出一个新事物,“翻新”的门槛可能低一些,然而带来的收益并不低。

据说你大学时代钻研过机器人?

平时还是挺喜爱折腾的,大学时是机器人小组的成员,和同学一起搞了 4 年机器人,他们前面进来守业专门搞机器人了。我没有跟着去,不过平时对这些货色玩得还比拟多,也喜爱写一些和硬件相干的代码。当看到你的代码管制了一个机械臂在动,和管制台上刷一些 log 带来的成就感还是不一样的。

搞的比拟有意思的有两个货色。一个是机械手臂,就是有一个手套,手上做什么动作,机械臂就跟着做。另外一个是蜘蛛一样的六条腿匍匐机器人,通过 WIFI 来管制。很有意思的一点是,它是正反同构的,所以咱们给它搞了一个翻身的动作,翻过来之后也能够持续爬。

(钻研过机器人的周威和他现在的小小人)

最近在学什么?有没有能够分享的学习办法?

最近在看 GPU/CUDA 编程,想看看 GPU 的能力在 OLAP 能不能用得上。

我感觉搜寻能力是一种学习过程中十分须要的能力。出了学校之后,大部分学习只能靠本人了,接触的货色都是新的,很多状况下就只能从网上找材料。然而网络信息横七竖八,就须要有肯定的信息筛选和检索能力。搜寻的时候,用英文关键字找到的无效信息会绝对多些。

对于 StarRocks

StarRocks 创建两年多来,始终专一打造世界顶级的新一代极速全场景 MPP 数据库,帮忙企业建设“极速对立”的数据分析新范式,助力企业全面数字化经营。

以后曾经帮忙腾讯、携程、顺丰、Airbnb、滴滴、京东、众安保险等超过 150 家大型用户构建了全新的数据分析能力,生产环境中稳固运行的 StarRocks 服务器数目达数千台。

2021 年 9 月,StarRocks 源代码凋谢,在 GitHub 上的星数已超过 3200 个。StarRocks 的寰球社区飞速成长,至今已有超百位贡献者,社群用户冲破 7000 人,吸引几十家国内外行业头部企业参加共建。

退出移动版