這門分佈式 KV 存儲系統課程教會了我什麼

距離我從 PingCAP Talent Plan 結業已經過了三個月,這也算是我第一次與企業或者說工業界近距離接觸。與 PingCAP 結緣是在去年的六月份,我們實驗室發表了一篇有關 KV 方向的論文,眾所周知,PingCAP 研發了分佈式 Key-Value 存儲層 TiKV,同時他們也在尋求各種學術界的優化方案,嘗試將這些成果實現到產品中以提升性能。所以在 PingCAP 的崔秋老師和唐劉老師來拜訪了實驗室之後,我們就順利地開展了關於 TiKV 的合作。

那麼問題來了,我們對 TiKV 並不熟悉。首先,TiKV 雖然也是 KV 存儲系統,但它是一個分佈式的 KV 系統,而我們研究的主要方向是單機 KV 存儲引擎,因此我們需要去補習各種分佈式方面的知識;第二是語言的門檻,平時的工作中我們都是 C/C++為主,在瞭解 PingCAP 之後才接觸到 Rust 這門語言,進而瞭解到 Rust 陡峭的學習曲線,這無疑給我們熟悉 TiKV 又設置了一個阻礙;除此之外,關於 TiKV 的基本結構、各種實現上的技術等等,也是我們的知識盲區,要完全熟悉這個龐大的系統實屬不易。而這個時候,Talent Plan 悄然而至,為我們深入瞭解並掌握 TiKV 打開了一扇窗。

Talent Plan 第一期是去年十一月份開始的,不巧的是那段時間我正忙著實驗室的論文任務,沒能參加。據說第一期 Talent Plan 因為沒有區分線上線下課程,所以把基本語言學習以及後續系統學習課程壓縮到了一個月的時間內,學員的學習壓力比較大(嘿,還好我是第二期)。我真正參與到 Talent Plan 是在今年的三月份。有了第一期的經驗,第二期 Talent Plan 在課程內容上做了很大的升級優化,拆分了線上部分和線下部分。首先我在實驗室完成了語言以及基本的 Raft 原理等線上課程,然後再前往 PingCAP 總部學習一個月,專注於系統的學習。這個時間安排更加合理,一定程度也減小了我們的學習壓力。

在四月中旬,完成線上課程的我動身前往北京,與西工大、武大、中科大以及同一實驗室的另一名小夥伴,開始了為期一個月的 TiKV 線下課程的學習。

第一週的課程任務主要是論文閱讀,導師們挑選了分佈式存儲領域的論文帶領我們閱讀,同時穿插了兩堂課,分別是 Rust 入門課程以及 TiKV 架構入門。通過論文以及簡單的介紹,我們基本熟悉了主流的幾個分佈式數據庫系統以及基本分佈式一致性原理,算是正式進入到 TiKV 的世界。

第二三週開始深入學習 TiKV,從基本的 Read/Write Flow 解析到 TiKV 的部署以及性能測試,同時穿插學習 Raft 基本原理、MultiRaft 實現原理以及 Percolator 事務模型。各位導師由淺至深為我們解析了 TiKV 的各個層次的實現原理,我們也通過實際操作鞏固相關的知識,瞭解到他們究竟在系統中是怎麼運作的。

最後一週,我們的任務是綜合前面的學習內容,自己實現一個基於 TiKV 的 Redis server,算是整個線下學習階段的一個總結。

總體來說,完成所有課程以及任務讓我們對 TiKV 以及 PD 的原理和實現都有了一個詳盡的認識,雖然期間也遇到了各種困難,好在最後還是完成了所有任務順利結業。在學習過程中,每天下午都有老師來為我們答疑(主要是 zhangjinpeng 老師),學習過程中遇到的問題都能夠得到及時的解答,還能進行額外的工業界方面知識的拓展,讓從未實際接觸過工業界的我們學到了難得的經驗。而且每週都有工作人員(此處感謝 linlin 姐)來記錄生活學習上遇到的問題,能夠得到非常及時的反饋,讓我們能夠專注於當下的學習。

當然,這也只是 Talent Plan 的第二期,也有不完美的地方。就我的感受而言,首先是課程安排上,語言基礎以及 Raft 原理在我們完成線上課程之後基本已經很熟悉了,沒有必要再次重複,可以省下來安排給別的課程。其次,我個人感覺線上課程從 Rust 入門到完成最後完成 MIT 的 kvserver 課程,一個月的時間有點緊張(建議小夥伴們儘早開始準備),而且 MIT 的兩個課程的測試 case 非常的多,導致大量的時間花在了 debug 上,有點喧賓奪主。相比起來後面 Percolator 的課程感覺很合適,難度適中,完成之後在導師的指導下結合實際應用場景還進行了一些優化拓展。還有一個小問題,課程任務有的時候描述太簡單,導致我們拿到題目有點一頭霧水,當然每次都能通過及時溝通得到更加詳細的說明(笑)。

當然 Talent Plan 也在不斷的優化,據我所知,第三期課程已經做了許多改進,上面提到的問題已經得到了優化與解決,後續課程應該也會更加完善。

總的來說,參加 Talent Plan 是一次非常珍貴的體驗,一方面是學到了許多的沒有接觸過的分佈式領域的知識,另一方面也結識了來自全國各個高校的優秀的小夥伴以及 PingCAP 的各位厲害的導師,也為我之後來 PingCAP 實習埋下了伏筆。

最後,感謝 PingCAP 各位工作人員以及各位導師的付出與工作,為我們帶來了 Talent Plan 這樣優秀的活動。


分享到:


相關文章: