從使用者到開發者,知乎參與 TiDB 社區背後的故事

  • 2019 年 10 月 4 日
  • 筆記

作者介紹:孫曉光,知乎技術平台團隊負責人,負責建設知乎在線和離線的基礎設施平台,為業務開發提供統一的基礎設施。曾多年從事私有雲相關產品開發工作,關注云原生技術,TiKV 項目 Committer。

關注 TiDB 的朋友們可能發現繼 Follower Read 在 TiKV 端的 PR 合併後,TiDB 端相關的 PR 也於近期完成了到主幹的合併工作。如果後期的穩定性測試一切正常,相關功能應該會隨 TiDB 3.1 發布。Follower Read 功能本身從程式碼量上看並不大,但這個功能的意義尤其是對互聯網類型業務來說是非常大的。

前段時間 PingCAP CTO 黃東旭已經寫了 一篇文章,從原理角度對 Follower Read 做了非常透徹的介紹和分析。今天我想從非技術的角度介紹 Follower Read 功能的落地過程,並從 Contributor 的視角跟大家聊一聊個人參與 TiDB 開發過程中的體驗和感受。最後站在知乎技術平台團隊的角度,聊一下我們未來在積极參与開源項目,共同建設社區的願望和決心。

Follower Read 背後的故事

Follower Read 的實現思路在 PingCAP 工程師大腦里應該已經存在很久了,但出於各種原因這個特性的優先順序一直不夠高,並沒有能排到開發計劃中。年中的時候我們開始嘗試在知乎更廣泛的業務中引入 TiDB,在灰度過程中我們遇到了某些特定工作負載下 TiDB 表現不夠理想的問題。目前看來 TiDB 讀寫操作都交給 Leader 完成,是我們目前在特定負載下遇到吞吐問題的瓶頸點。

在理清思路後,我們同 PingCAP 的工程師做了幾次交流並達成一致,決定通過 Follower Read 的方式來解決我們業務場景中極端熱點數據訪問的吞吐問題。在實際需求的驅動下, PingCAP 同學將 Follower Read 相關特性的優先順序提高,快速確定了相關功能的技術方案並啟動了 TiKV 端的開發工作。作為 Follower Read 功能的需求方,知乎負責這個需求在 TiDB 上的落地工作。

PingCAP 工程師用了大約兩周的時間完成了 TiKV 層 Follower Read 整個功能的開發測試,並將其合併到 master 分支中,隨後我們開始了 TiDB 側相應功能的開發,在 PingCAP 小夥伴們的幫助下最終完成了相應功能到 master 分支的合併。作為知乎和 PingCAP 兩家公司第一次聯合開發的成果,這個功能的落地對雙方都有著重大的意義。

從 Contributor 到 Committer

在以知乎技術平台團隊成員的身份參與 TiDB 貢獻之前,個人曾經在過去的一年裡以用戶的身份為 TiKV & TiDB 做過一些小型的貢獻。接下來我就從個人角度聊一下從 Contributor 到 Committer 的成長過程和其中的體驗。

第一次為 PingCAP 旗下項目提交 PR 並成為 Contributor 發生在大約一年前,我在為內部開發的業務系統選擇合適的存儲後端時,嘗試給 TiKV 增加了一些批量操作介面。PR 提出後,PingCAP 首席架構師唐劉很快就跟我建立了聯繫,在隨後的交流中幫助我快速完善 PR 並最終合併到 TiKV 的主幹中。

雖然以往以零散的方式給很多開源項目提交過 Patch,但這次的體驗是完全不同的,PingCAP 和社區夥伴們熱心的幫助和鼓勵讓我切身感受到了活躍的開源社區所具有的獨特魅力。隨後出於個人興趣,我在 TiDB 相關的項目中又陸陸續續做了一些簡單的貢獻,最終得到大家的認可成為 TiKV 項目的 Committer 之一。

擁抱開源

回過頭來看這段時間的成長和收穫都是巨大的,不但學習到了如何同開源社區眾多優秀的貢獻者更加高效的交流,並且對開源的價值理念和開源在基礎軟體領域的重大意義有了更加深入的理解。

近期隨著在公司所在團隊的轉換,我個人開始更多的關注在線和離線的基礎設施在知乎的演進。知乎一直以來都鼓勵擁抱開源,並基於大量開源組件搭建了知乎的技術架構,得益於開源的力量,知乎的內部平台一直都緊隨著行業技術發展的潮流。從前我們更多是站在使用者的角度從開源社區汲取養分,隨著知乎技術架構和內部工程能力的成長,未來我們希望能夠以更加積極主動的狀態參與開源項目,回饋社區。Follower Read 是知乎第一次以 Contributor 身份參與 TiDB 社區建設,未來我們會參與更多的技術社區的建設為開源社區的發展貢獻我們的力量。

原文閱讀:https://pingcap.com/blog-cn/zhihu-the-story-of-contributing-to-tidb-community/