StarRocks 极客营 | 王天宜:把 Usability 当产品来开发,愿运维把 StarRocks 用得飘逸
46 天全實戰(zhàn)開發(fā),17 位 Mentor 1V1 指導(dǎo),18 個成功被 merge 的 PR,23 個微信交流群,數(shù)不清的溝通……專為數(shù)據(jù)庫開發(fā)者打造的“StarRocks 極客營”第一季已落下帷幕。
在第一季中,社區(qū)選取了 Execution Engine、Storage Engine、Data Lake Analysis、Ecosystem、Loading、Observability、Planner、Usability 等 8 個方向,開放了 34 個開發(fā)任務(wù)。
曲終人不散,StarRocks 社區(qū)會對 8 個任務(wù)方向推出 5 篇專訪,揭秘極客們大膽挑戰(zhàn)、和技術(shù)大牛一起推開數(shù)據(jù)庫夢想之門的過程,也希望能給數(shù)據(jù)庫領(lǐng)域的開發(fā)者和用戶帶來一些啟示。
今天登場分享的是擁有十年 DBA 經(jīng)驗、選擇了 Usability 方向的開源發(fā)燒友——王天宜(GitHub ID: wangtianyi2004)。
王天宜擁有十年 DBA 經(jīng)驗,做過 Oracle、MySQL 和 PostgreSQL,也做過大數(shù)據(jù)運維。之前一直在做基礎(chǔ)平臺架構(gòu)的建設(shè),圍繞著 Kubernetes、分布式存儲、數(shù)據(jù)庫以及消息隊列和采集工具構(gòu)建金融業(yè)務(wù)基礎(chǔ)平臺。
作為 PostgreSQL 的發(fā)燒友,他在 Patroni 上做過二次開發(fā),開發(fā)了 PostgreSQL Operator 與 Patroni Operator 來推進數(shù)據(jù)庫上 Kubernetes。后期在選型中了解到開源分布式數(shù)據(jù)庫,在測試與使用后轉(zhuǎn)身投入開源數(shù)據(jù)庫建設(shè)的陣營。
為什么選擇 Usability 方向?
我一直是做基礎(chǔ)平臺架構(gòu)的,從 TP 數(shù)據(jù)庫做到 AP 數(shù)據(jù)庫。由于是平臺運維,實際編碼的工作量并不多,一般都是圍繞著周邊生態(tài)進行開發(fā),寫過一些簡單的中間件,對 PostgreSQL 的邊緣功能做過一些二次開發(fā),改寫過監(jiān)控平臺。
開始接觸 StarRocks 后,需要在我自己的虛擬機上做大量的功能性驗證。中午吃個飯或者開個會回來機器會自動休眠,相當于所有的 Server 都會掉點,我需要一個節(jié)點一個節(jié)點把服務(wù)拉起來。最開始只是寫了一個簡單的原型,通過 SSH 直接啟動集群的所有節(jié)點。后來自己的需求也越來越多,就想寫一個 StarRocks Console 版的管理平臺。
Usability 是一個非常有意義的主題。很多 Usability 的功能點都是一個自底向上的共建過程,數(shù)據(jù)庫的廠商對 Usability 大多后知后覺,非常需要使用者的推進和反饋。在開發(fā)過程中我也一直把這個工具當成是一款獨立的產(chǎn)品,希望更多和我一樣的 SRE 或者運維同學,能夠把 StarRocks 用得更飄逸,像個技術(shù)俠客一樣。
你選擇的是哪一個 Issue?
在介紹項目之前,首先要致敬 TiUP 這款工具。RESPECT。功能上大部分都是參考 TiUP 的。
這個項目是?Develop a tool for managing multiple StarRocks clusters【Easy】 · Issue #4034 · StarRocks/starrocks,主要就是一個多集群統(tǒng)一管理工具。
最開始的想法是通過 ssh 命令做一個 hardcode 的啟停工具,方便我在宿主機休眠時把所有節(jié)點運用起來。后來因為需要操作的集群越來越多,把 Scripts 改成了可以通過配置文件啟停指定的集群。后來索性就把部署、升級降級、擴容縮容都加進來了。
感興趣的朋友可以看一下我寫的?User Guide,也可以看一下我在 GitHub 上的具體實現(xiàn)?Release sr-ctl v1.0.1 · wangtianyi2004/starrocks-controller。
多集群統(tǒng)一管理工具:https://github.com/StarRocks/starrocks/issues/4034
User Guide:https://in9aoxx754.feishu.cn/docs/doccnAUw7sF3wdul5Sx7fwinDbc
具體實現(xiàn):https://github.com/wangtianyi2004/starrocks-controller/releases/tag/sr-ctl
具體描述一下你實現(xiàn)了這個 Issue 哪些功能
主要是以下 5 個:
-
DEPLOY:根據(jù) yaml 文件部署 StarRocks 集群
-
DISPLAY / LIST:顯示某一集群或所有集群的信息
-
START / STOP:啟動或停止集群,根據(jù)參數(shù)選擇啟動/停止某一節(jié)點、全部 FE 或 BE 或者是集群所有節(jié)點
-
UPGRADE / DOWNGRADE:升級或降級版本
-
SCALE-IN / SCALE-OUT:擴容或縮容節(jié)點
這個工具的核心點是多集群管理,通過一個中控機完成所有集群的管理和配置。在配置了中控機的 SSH 互信后,可以通過中控機以命令行的方式完成不同集群的管理。
在具體實現(xiàn)上,你做過怎樣的權(quán)衡?
對于數(shù)據(jù)庫管理基本有如下幾種思路,這個項目也經(jīng)歷了這幾個階段:
1. 使用 Script 進行集群的管理
2. 使用 Ansible 或者 Puppet 等工具進行管理
3. 開發(fā)獨立的平臺進行管理
腳本化的管理方式
在最初的階段,我也確實是有使用腳本進行集群控制。對于腳本來說,最大的問題在于大部分參數(shù)都是 hardcode 的。當功能多的時候,難以對腳本進行組織與規(guī)劃,維護起來相對復(fù)雜。腳本的管理方式一般只適用于實現(xiàn)單一的小功能,比如說在最初的版本中使用腳本來控制集群啟動。
自動化部署工具
類似于 Ansible 或者 Puppet 這一類的自動化部署工具,也非常適合集群的管理。也會有很多公司使用 Ansible 作為平臺級的自動化管理工具,針對于不同的操作編寫 Playbook。我也曾考慮過使用 Ansible 的 Playbook 進行部署操作,但是考慮到通用型,如果做成一個產(chǎn)品,Ansible 部署和依賴可能無法滿足極簡化的操作需求。
獨立管理平臺
獨立的管理平臺在開發(fā)難度上相較上面兩種方式難度大了很多,但操作體驗會有質(zhì)的飛躍。比如說獨立的管理平臺可以不需要安裝部署,不依賴于其他的組件,可以進行定制化開發(fā)。這也是我選擇獨立管理平臺的原因。
作為一個集群的管理工具,你如何看待用可視化或者命令行進行集群管理?
我個人是非常喜歡命令行的這種感覺。
在寫這個工具時,前期考慮過是要做一個可視化的工具還是一個命令行的工具。按照我個人的習慣,喜歡命令行的操作多一些。考慮到可視化管理平臺的安裝部署本身就是一個復(fù)雜的操作,也可能依賴于其他的組件,實現(xiàn)難度也更大一些,最終選擇了命令行的方式。在選定以命令行的管理方式后,更多精力放在了如何簡化命令行操作上。
對于這個項目來說,你還有什么規(guī)劃嗎?
這個工具剛完成第一個版本,重心基本放在了 StarRocks 的部署與維護上。
由于時間原因,第一個版本在日志輸出上存在一些問題,接下來會逐步對輸出日志進行優(yōu)化。
在下一個版本中,可能會更多注重生態(tài)開發(fā):
-
完成 Prometheus 與 Grafana 的部署與管理
-
考慮對接 ELK 日志收集平臺
-
通過配置文件完成數(shù)據(jù)導(dǎo)入工作
另外,對于我來說,這是一個完全開源的項目,也希望會有更多的人參與其中。如果大家對這個工具感興趣,可以到我的 GitHub 下面提需求。希望更多的社區(qū)用戶可以充當產(chǎn)品經(jīng)理的角色,一起來決定這個工具未來的功能點與發(fā)展。這也是開源的魅力所在。
參與這個活動,你有哪些收獲或者感受?
這是我第一次獨立參與一個開源的項目。
最初的開發(fā)理念只是做一個簡單的 quick start 的工具,估算用時也沒有多少,覺得春節(jié)假期就能搞定。不過后面越做越大,不停進行需求迭代,一直到最近才完成第一個版本。
經(jīng)常回到家就已經(jīng)很晚,自己寫一會兒基本就兩三點了。非常敬佩開源圈子里的前輩,很多互聯(lián)網(wǎng)技術(shù)大佬在工作之余依然投身于開源項目的建設(shè)。非常有幸這次我也能成為其中的一員。
你如何看待開發(fā)者對社區(qū)的貢獻?
之前參與過 TiDB 等社區(qū)的活動,很遺憾沒有給 TiDB 做什么源碼貢獻,這也是我參與社區(qū)活動最大的遺憾。在這次的項目開發(fā)中,我借鑒了很多 TiUP 的功能,在沒有思路的時候,會去翻一翻 TiUP 的實現(xiàn)。
開源社區(qū)更像是技術(shù)江湖,每一個參與者都是一個俠客,當我們行走于江湖的時候,可以用之前習得的武藝,幫助到其他人。我從一個開源社區(qū)學習到的東西,可以對其他產(chǎn)品有所幫助,其實能夠促進所有的社區(qū)和產(chǎn)品一同進步。
有沒有要特別感謝的人?
我要特別感謝兩個人,一個是 PingCAP 的 Jack Ma,每次都被我拉過來討論需求,極其有耐心。還有一位是 StarRocks 的晨陽小姐姐,幫我做了很多的測試,也和我爭論過很多設(shè)置是不是合理。希望未來能夠有更多人參與到項目的共建中。
Mentor 說
易用性是最需要通過社區(qū)來獲取靈感和產(chǎn)品改進方向的。StarRocks 在性能表現(xiàn)上已經(jīng)領(lǐng)先于其他同類產(chǎn)品,但是在易用性上還有很大的提升空間,無論在部署運維、建表的分區(qū)分桶、導(dǎo)入查詢的參數(shù)等都需要做系統(tǒng)的提升改造。
StarRocks 的核心特性之一就是利用分布式的 MPP 架構(gòu)來充分利用機器資源,但是集群部署比較復(fù)雜,我們一直希望能夠有一款一鍵部署的工具來幫助剛剛了解到 StarRocks 的新用戶,讓大家快速體驗、輕松運維。
同時,數(shù)據(jù)庫的可觀測性(Observability)和可控制性(Controllability)是會持續(xù)提升的,但是數(shù)據(jù)庫內(nèi)核的 API 非常需要一個和用戶能夠交互的接口。通過這個接口,我們可以持續(xù)把數(shù)據(jù)庫的核心功能,以更加友好的方式展現(xiàn)給 StarRocks 的用戶。因此對這個題目我是非常期待的,天宜的初版完成度和合作精神值得贊美。
——趙恒(GitHub ID: Dshadowzh)
總結(jié)
以上是生活随笔為你收集整理的StarRocks 极客营 | 王天宜:把 Usability 当产品来开发,愿运维把 StarRocks 用得飘逸的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css 文本稿纸样式,word设置稿纸样
- 下一篇: sql date_format用法