从用户到开发者是一种思维进化过程 | 访 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认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

作业提交过程之HDFSMapReduce

作业提交全过程详解 (1)作业提交 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。 第2步:Client向RM申请一个作业id。 第3步:RM给Client返回该job资源的提交路径和作业id。 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。 第5步:Client提交完资源后,向RM申请运行MrAp

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Solr 使用Facet分组过程中与分词的矛盾解决办法

对于一般查询而言  ,  分词和存储都是必要的  .  比如  CPU  类型  ”Intel  酷睿  2  双核  P7570”,  拆分成  ”Intel”,”  酷睿  ”,”P7570”  这样一些关键字并分别索引  ,  可能提供更好的搜索体验  .  但是如果将  CPU  作为 Facet  字段  ,  最好不进行分词  .  这样就造成了矛盾  ,  解决方法

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

京东物流查询|开发者调用API接口实现

快递聚合查询的优势 1、高效整合多种快递信息。2、实时动态更新。3、自动化管理流程。 聚合国内外1500家快递公司的物流信息查询服务,使用API接口查询京东物流的便捷步骤,首先选择专业的数据平台的快递API接口:物流快递查询API接口-单号查询API - 探数数据 以下示例是参考的示例代码: import requestsurl = "http://api.tanshuapi.com/a

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

ORACLE语法-包(package)、存储过程(procedure)、游标(cursor)以及java对Result结果集的处理

陈科肇 示例: 包规范 CREATE OR REPLACE PACKAGE PACK_WMS_YX IS-- Author : CKZ-- Created : 2015/8/28 9:52:29-- Purpose : 同步数据-- Public type declarations,游标 退休订单TYPE retCursor IS REF CURSOR;-- RETURN vi_co_co