瞭解 TiDB 社區的朋友應該都知道 PingCAP Talent Plan 這門課程,它的初衷是希望造一個“梯子”,幫助小夥伴們一步步從 Go/Rust 語言、分佈式系統基礎,到實操練習,最終踏上分佈式數據庫“高階玩家”的平臺。
目前 PingCAP Talent Plan 誕生 1 年多了,我們想把“梯子”替換成更穩定的“臺階”(未來搞成“自動扶梯”也不一定 ;D),給課程裝備來點升級。
現在我們有了一些課程設計雛形,歡迎大家來“試玩”並提供建議、貢獻自己的智慧,一起來打造這門課程!希望 Talent Plan 2.0 課程最終成為 TiDB 社區“共建共享”的智慧結晶,幫助更多社區夥伴們學習、成長。
升級版課程規劃
下面是我們構思的 PingCAP Talent Plan 2.0 版本的課程結構:
Talent Plan Courses 2.0 Framework如上圖所示,我們將 Talent Plan 1.0 的優質資源進行整合,同時增加了一些全新的課程系列,形成了一個更大的 Talent Plan 學習版圖。Talent Plan 2.0 將涵蓋 4 個課程系列,包括:
- Open Source Collaboration:面向零基礎開源愛好者的開源協作課程,這是一個全新的模塊,下文將詳細介紹。
- Programming Language:面向各種編程語言愛好者,目前已有的是 Go、Rust 語言課程,後續準備新增其他語言。
- Infrastructure Systems:面向愛折騰基礎架構系統的同學。
- Deep Dive:TiDB 生態項目深度解讀課程,課程難度由淺入深、層層遞進。在已有的 TiDB/TiKV 課程基礎上,計劃新增 Cloud TiDB 等其他生態項目的課程。
每個課程系列都將新增更多內容,比如 Infrastructure Systems 課程系列,除了大家喜歡的 Distributed System in Rust 課程之外,還將新增用 Go 語言設計的分佈式關係型數據庫(TinySQL)課程和分佈式 Key-Value 數據庫(TinyKV)課程,下面將詳細介紹。
Talent Plan 2.0 新亮點
1. 面向開源愛好者的開源協作系列課程
這是我們專門為零基礎開源愛好者準備的全新課程,希望即使是技術小白也能進入開源世界玩耍,比如不同開源軟件許可協議的差異、知名開源基金會(Linux、Apache、CNCF 等)的運作方式以及開源社區運營的基礎知識,快速掌握參與開源項目的小技巧。目前這個課程系列的學習資料已經準備完畢,3 月 2 日將開啟為期 10 天的開源協作系列課程體驗計劃,任何對開源感興趣的小夥伴都可以加入 Talent Plan Courses Working Group 參與課程體驗,體驗過程中你可以:
- 分享學習成果和感受;
- 補充其他開源相關的有價值的學習資料;
- 為課程作業的設計貢獻 Idea。
無論是以上哪種方式,你都能為這個課程系列貢獻自己的一份力量。
2. 用 Go 語言設計的分佈式關係型數據庫(TinySQL)課程
TinySQL 課程是基於 Go 語言實現的分佈式關係型數據庫,相比於 Talent Plan 1.0,會更加全面,幾乎涵蓋了分佈式數據庫 SQL 層最重要的部分。該課程會按照一個由簡單到複雜,由靜態到動態的順序展開:
- 首先我們將對 SQL 和關係代數有一個簡單的瞭解,為後面的課程做準備;
- 接下來,我們將聚焦一個只讀 SQL 的執行,從 Parser 如何解析語義,到執行器如何執行語義,並在最後去了解優化器如何選出最優的執行計劃;
- 最後,我們將聚焦在那些改變數據狀態的 SQL(包括 DML 以及 DDL),以及如何處理它們和只讀語句之間的相互影響。
目前課程的代碼框架已經完成實現,課程材料也正在準備中,歡迎社區小夥伴參與早期測試或者課程材料的編寫。
3. 用 Go 語言設計的分佈式 Key-Value 數據庫(TinyKV)課程
TinyKV 課程是基於 Go 語言全新設計的分佈式 Key-Value 數據庫課程。類似已有的 Distributed System in Rust 課程,TinyKV 同樣受著名的 MIT 6.824 所啟發,但更加接近 TiKV 的實現。我們引入調度相關邏輯,學員可以從 0 到 1 實現一個完整可用的分佈式 KV 服務。課程主要分為四個部分:
- LAB1:實現單機 KV server;
- LAB2:基於 Raft 實現多副本高可用 KV server;
- LAB3:實現 Multi-Raft 以及數據均衡調度;
- LAB4:基於 Percolator 模型實現分佈式事務。
當完成課程後,大家將會從實踐中對 Raft 協議、Percolator 分佈式事務模型有更深刻的理解。同時大家在實現 TinyKV 的過程中,也會更加了解 TiDB + TiKV + PD 的實際框架了,之後深入研究 TiDB/TiKV/PD 的源碼會更加遊刃有餘。目前,我們已經完整實現了一個可用的 TinyKV 和相關測試,接下來會通過不斷修剪得到課程需要的框架代碼,同時課程材料也在緊鑼密鼓地進行編寫中。歡迎社區小夥伴參與早期測試反饋建議以及文檔的查漏補缺。
4. 作業分發、提交、分數評估及反饋更加自動化
為了給小夥伴們更好的參與體驗,並提高作業分發效率,我們調研了國內外大學在教學過程中使用的優秀工具,目前在重點針對 Github Classroom 進行作業分發功能的測試。除此之外,作業評估工作也將採用在工業界被廣泛採用的 CI 技術,作業結果反饋會更加快速、高效、自動化。
試玩及反饋通道
以上課程及自動化作業分發工具都還處於調試階段,大家可以加入 Talent Plan Courses Working Group 參與 2.0 課程體驗、交流或吐槽,期待與各位共同打磨這門課程!
另外,在 2.0 課程細節完全敲定對外公佈之前,大家依然可以繼續學習 Talent Plan 1.0,作業提交與成績評定規則與之前保持一致,更多細則詳見 PingCAP University 官網。
閱讀更多 PingCAP 的文章