Little-Wallace 和 Yisaer 的 Committer 之路

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"Raft SIG 和 engine SIG 的 Committer 。本科專業是計算機科學與技術。畢業後在阿里巴巴做搜索引擎存儲相關的工作,來到 PingCAP 以後開始做 TiKV 的存儲引擎。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"scheduling SIG 和 execution SIG 的 Committer 。本科專業是計算機,18 年畢業做後端程序員,後來做 k8s 相關的開發工作。19 年來到 PingCAP ,目前在調度組做研發。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"什麼時候開始接觸編程的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace:"},{"type":"text","text":"我接觸編程的時間比較晚,基本是讀大學的時候,在大學期間寫過一個 OJ(在線編程考試的網站)。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"我從高中信息課開始接觸編程,業餘瞭解一些編程的知識,當時完全沒想到未來會從事這方面職業。大學一開始我並不在計算機系裏就讀,那時候已經意識到我比較擅長並且也喜歡編程,所以就轉專業轉到了計算機系。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有沒有寫過好玩的項目?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"我寫過最好玩的項目是我的畢業設計 https:\/\/github.com\/Yisaer\/Nest4J 。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它在一個非常冷門的領域裏面,是在車牀加工裏作爲材料的板材套量設計。這個項目特別有意思,但是做的人少,資料也特別少,做出來之前我都覺得沒有信心,不過最終拿到了學校的優秀畢業設計。工作以後,我把這個項目開源了,陸陸續續不少人通過郵件的方式諮詢我關於這個程序的使用方式和改進空間,其中不乏有來自 CNC 領域的專業人士,在這些交流中我也受益良多。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如何瞭解到 TiDB 的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace:"},{"type":"text","text":"第一次瞭解到 TiDB 是讀大四的時候, PingCAP 的同學來我們學校做宣傳,然後知道了 TiDB 這樣一個產品。那時候我在數據庫方面的知識比較薄弱,很少關注數據庫底層的原理與實現。我之前以爲 MySQL 也是分佈式數據庫,後來才知道只是一個單機數據庫。原來 PingCAP 在做的是這麼酷炫、這麼超前的事情。但是剛畢業時我沒有來到 PingCAP ,直到 18 年參加 PingCAP 舉辦的 Hackathon,纔算是我第一次接觸到開源項目。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"我是先認識到申礫老師,然後才瞭解 TiDB 的。當時刷知乎看到申礫老師發的招聘信息,就私信他想去實習,可惜掛在了面試階段。後來 2019 Kubecon 又看到貴司的分享,和 TiDB 社區的 Contributor 交流了關於換工作的想法,他推薦我來貴司,最後經過社招面試終於來到 PingCAP !"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第一次貢獻 TiDB 感受如何?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace:"},{"type":"text","text":"第一次貢獻是給 TiKV 提 PR ,需要別的同學來 Review ,然後再對代碼進行細緻的改進,這和以前的工作體驗完全不一樣。第一次給 TiDB 貢獻是參加 PingCAP 舉辦的 Hackathon。我們做了一個監控的可視化的項目,監控微信的歷史信息和整個集羣的數據分佈變化,把它做成圖表的形式。經過比賽我對 TiDB 架構有了更深入的瞭解,在技術上學習到了很多,擴展了視野,收穫非常大。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"最開始我的工作內容是完善 TiDB 的周邊工具,所以貢獻 TiDB 代碼其實是屬於工作範圍以外的興趣研究。當時我對數據庫和 TiDB 瞭解不多,希望通過貢獻 TiDB 的方式來熟悉這個領域,還記得我的第一個 TiDB PR 是給 TiDB 的配置項修改一個默認值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"貢獻 TiDB 的動力是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:動力是在 TiDB 裏解決問題非常具有挑戰性挑戰,並且很有意思。"},{"type":"text","text":"在 TiDB 社區,貢獻者有等級機制,我逐漸在對應的 SIG 裏從 Contributor 變成 Reviewer,再變成 Committer,這個過程讓我非常有成就感。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你在貢獻中遇到的最大的困難是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace:"},{"type":"text","text":"我在貢獻 TiDB 過程中遇到的最大的一個困難是 TiKV 在測試過程中突然出了問題,日誌裏面的錯誤顯示是 RocksDB 的 SST 的順序錯誤。這個 BUG 我們排查了非常久,並且找了很多位同事幫忙查看問題,因爲產生的錯誤非常的底層,而且難以復現,最後大家一起逐行分析錯誤 SST 文件產生前後的各種操作,再對比代碼才發現了 RocksDB 的這個隱藏 BUG:https:\/\/github.com\/facebook\/rocksdb\/issues\/5913,這個過程令我非常難忘。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"最大的困難是 19 年年中,我開始着手調查的一個 TiDB 讀數據算子內存 OOM 的問題。這個問題比較難復現,而且我當時對那塊代碼也並不熟悉。做這個項目的同時還遇到了非常多次 go race 問題。另外由於讀數據算子是 TiDB 中至關重要的環節,所以針對解決 OOM 的設計我們也展開了非常多次討論。整個項目研究,設計,實驗反覆多次,耗時了將近  5 個月才最終成熟解決。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你在貢獻過程中最有成就感的事情是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"最有成就感的事情還是在解決上面提到的困難上,因爲問題的複雜性,後面我又拉了 2 名 TiDB 的同事一起討論。這個問題修復後,我們投稿了 2020 年的 percona live 並很有幸做了一次分享。雖然花了非常久的時間,但最終不僅解決了 TiDB 的內存管理問題,同時也能將我們的成果分享出去,非常有成就感。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"談談你對開源的理解。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace:"},{"type":"text","text":"我認爲開源作爲一種生產協作方式,從生產力的角度上來說是一場革命。"},{"type":"text","marks":[{"type":"strong"}],"text":"它能把我們這些零散的力量組織起來,開發出很了不起的產品。"},{"type":"text","text":"從產品維度上來說,整個社區一起體驗產品,能幫助產品試錯,不斷完善產品的功能。從技術角度上來說,把產品開源出去的同時,也在接納整個社區的技術反饋,大家會立刻指出來產品技術上的不足,具有能夠快速進步的優勢。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:我覺得開源就是結合羣衆的力量,將一件事做好並做到極致。"},{"type":"text","text":"這是我的理解,如果沒有開源的話,可能也不會來到貴司,也不會有機會接觸這麼多的產品。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"你是一個開源愛好者嗎?有沒有給其他項目貢獻的經歷?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"其實來貴司之前我是一個開源項目使用愛好者,給 Kubernetes 和 Istio 社區提了很多 issue,主要通過線下分享和線上博客的形式在社區貢獻。來貴司後,會更加傾向通過代碼的方式來進行貢獻。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有沒有給社區小夥伴們的建議?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Little-Wallace:"},{"type":"text","text":"我覺得對於剛入門的開源愛好者,貢獻時首先要了解這個項目需要你做什麼。可能很多愛好者剛開始看到一個項目非常龐大,不知道做什麼,或者從哪裏開始做。我建議大家可以參加比賽,PingCAP 提供了像性能優化大賽、Hackathon 等活動,官方會有導師指導,在比賽中有明確的目標和方向,會比自己給項目做貢獻簡單方便很多。這樣一方面可以瞭解項目,另一方面也鍛鍊代碼能力。如果你有比較先進的 idea ,可以讓社區幫助你一起完善和落地,不管對開發者還是對 TiDB 都是雙贏。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"我建議新人可以多和 TiDB 社區的開發人員交流。其實我作爲社區成員很喜歡和 Contributor 們交流和互相學習。包括如果 PR 想要儘快被 Review ,也要多催一催我們。所以新人有問題可以在 Slack 或微信裏找我們,相比 GitHub 渠道,Slack 和微信的反饋方式會更高效更及時。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Q"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後還有什麼想要分享給大家的?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Yisaer:"},{"type":"text","text":"對於已經是 TiDB Contributor 的同學,我建議可以多參與瞭解 TiDB 的各個領域。我一開始是從 TiDB 的周邊工具入手進行開發,後面來到調度組開始完善 TiDB 的調度工作。在業餘時間我對 TiDB 和其他數據庫的計算引擎也會花時間學習和參與代碼貢獻。我覺得多瞭解其他領域可以開闊自己的視野,對理解整個數據庫產品和生態有非常大的幫助。所以社區人員以及我們內部人員,如果對什麼項目有興趣,就可以直接參與他們,這也是我非常喜歡貴司的一個地方。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"horizontalrule"},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"頭圖:Unsplash"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:3\/23"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文:https:\/\/mp.weixin.qq.com\/s\/GfoME8wBn_dGUxGt4Rh0EA"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文:創造了不起 | Little-Wallace 和 Yisaer 的 Committer 之路"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"來源:PingCAP - 微信公衆號 [ID:pingcap2015]"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"轉載:著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章