热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从用户转型为开发者:一场思维升级的旅程|专访StarRocksCommitter周威

从用户转变为开发者,不仅是一次角色的转换,更是一场深刻的思维升级之旅。本次专访中,StarRocksCommitter周威分享了他如何在这一过程中逐步提升技术能力与思维方式,为开源社区贡献自己的力量。

身处技术创新驱动的时代,只有开放协作才能带来巨大进步,创造非凡成就。

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 人,吸引几十家国内外行业头部企业参与共建。


推荐阅读
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • MySQL缓存机制深度解析
    本文详细探讨了MySQL的缓存机制,包括主从复制、读写分离以及缓存同步策略等内容。通过理解这些概念和技术,读者可以更好地优化数据库性能。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • 深入解析 HDFS Federation:多命名空间架构详解
    HDFS Federation 是一种扩展 HDFS 架构的方式,通过引入多个独立的 NameNode 来解决单点故障和性能瓶颈问题。本文将详细探讨 HDFS Federation 的工作原理、优势以及潜在挑战。 ... [详细]
  • CentOS7源码编译安装MySQL5.6
    2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 本文详细介绍了Linux系统中init进程的作用及其启动过程,解释了运行级别的概念,并提供了调整服务启动顺序的具体步骤和实例。通过了解这些内容,用户可以更好地管理系统的启动流程和服务配置。 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • 脑机接口(BCI)技术正逐步将科幻变为现实,从帮助听障人士恢复听力到使瘫痪者重新站立,甚至可能将多年的学习过程压缩至瞬间。本文探讨了这一前沿技术的现状、挑战及其未来前景。 ... [详细]
author-avatar
Joql
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有