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