从用户到开发者是一种思维进化过程 | 访 StarRocks Committer 周威

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

这篇关于从用户到开发者是一种思维进化过程 | 访 StarRocks Committer 周威的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/730036

相关文章

Spring Security注解方式权限控制过程

《SpringSecurity注解方式权限控制过程》:本文主要介绍SpringSecurity注解方式权限控制过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、摘要二、实现步骤2.1 在配置类中添加权限注解的支持2.2 创建Controller类2.3 Us

StarRocks数据库详解(什么是StarRocks)

《StarRocks数据库详解(什么是StarRocks)》StarRocks是一个高性能的全场景MPP数据库,支持多种数据导入导出方式,包括Spark、Flink、Hadoop等,它采用分布式架构,... 目录StarRocks介绍什么是StarRocks?StarRocks适合什么场景?StarRock

StarRocks索引详解(最新整理)

《StarRocks索引详解(最新整理)》StarRocks支持多种索引类型,包括主键索引、前缀索引、Bitmap索引和Bloomfilter索引,这些索引类型适用于不同场景,如唯一性约束、减少索引空... 目录1. 主键索引(Primary Key Index)2. 前缀索引(Prefix Index /

Spring AI集成DeepSeek三步搞定Java智能应用的详细过程

《SpringAI集成DeepSeek三步搞定Java智能应用的详细过程》本文介绍了如何使用SpringAI集成DeepSeek,一个国内顶尖的多模态大模型,SpringAI提供了一套统一的接口,简... 目录DeepSeek 介绍Spring AI 是什么?Spring AI 的主要功能包括1、环境准备2

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

Spring Boot 3 整合 Spring Cloud Gateway实践过程

《SpringBoot3整合SpringCloudGateway实践过程》本文介绍了如何使用SpringCloudAlibaba2023.0.0.0版本构建一个微服务网关,包括统一路由、限... 目录引子为什么需要微服务网关实践1.统一路由2.限流防刷3.登录鉴权小结引子当前微服务架构已成为中大型系统的标

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

SpringBoot整合easy-es的详细过程

《SpringBoot整合easy-es的详细过程》本文介绍了EasyES,一个基于Elasticsearch的ORM框架,旨在简化开发流程并提高效率,EasyES支持SpringBoot框架,并提供... 目录一、easy-es简介二、实现基于Spring Boot框架的应用程序代码1.添加相关依赖2.添