从用户到开发者是一种思维进化过程 | 访 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 人,吸引几十家国内外行业头部企业参与共建。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apple M2 for Linux 的 GCC 与 LLVM Clang 编译器性能对比
科技媒体 Phoronix 对运行在 Linux 上的 Apple M2 芯片 的 GCC 和 LLVM Clang 编译器进行了性能测试和对比。 此次测试采用的设备是 Apple M2 MacBook Air ,运行基于 Arch 的 Asahi Linux 系统(这是目前唯一能够运行最新 Apple M2 芯片的发行版),测试基于 Linux 5.19 内核,编译器版本分别是 LLVM Clang 14.0.6 和 GCC 12.1,它们都是 Arch/Asahi 最新版本的编译器。在所有测试中,CFLAGS/CXXFLAGS 保持不变,针对 -O3 优化级别。 一共进行了数十种不同的 C/C++ 基准测试,旨在观察在运行 Linux 的 Apple M2 芯片上,GCC 12 和 Clang 14 生成的二进制文件哪个性能更佳。 测试结果如下:(选取部分结果) 可以看到,尽管 LLVM Clang 被 AArch64 供应商广泛使用,且 Apple 在上游 LLVM 上投入巨资,作为其 Xcode 使用的一部分。但至少在(Asahi)Linux 上运行时,GCC 12 编译器仍有...
- 下一篇
如何在保护用户隐私的同时实现精准广告投放?
用户在浏览App的页面时,如果经常跳出来不喜欢的弹窗广告不仅损害用户的浏览体验,也让用户对广告内容产生反感。作为App的营销人员,线上投放广告时如何精准捕捉用户需求,同时不引起用户的抵触心理十分重要。当用户不愿意将自己的个人信息,例如年龄、性别、兴趣爱好等隐私数据授权给App时,基于用户正在浏览的页面投放广告是个不错的选择,它决定了一则广告能否高效地定位到目标用户。 比如,用户正在新闻App里读一篇关于现阶段新能源汽车加速发展,续航里程大大增加,各城市也在加快部署充电桩的文章,如果定向广告机制理解了文章的上下文内容,用户在继续浏览新闻时可能会看到关于附近新能源汽车4S店的试驾邀请的原生广告,或者关于某品牌新能源汽车购置优惠的广告,精准定位目标用户需求。 HMS Core广告服务支持个性化广告和非个性化广告,非个性化广告是不基于用户过去行为的广告,使用上下文信息进行定向。上下文信息包括用户授权当前位置的粗略(例如城市级别)地理定位,设备自带的信息(例如手机型号等)以及当前应用程序的内容或当前应用搜索关键字上的内容。当用户在App里浏览某个内容,或者搜索某一话题、关键词表达出了对该话题的具...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19