推薦序三
三年前,當我們決定為TiDB開發自有的分布式key-value存儲係統TiKV時,我們首先要麵對的就是選擇什麼語言的問題。當時,擺在我們麵前的有多個選擇:Go、C++、Java和Rust。在仔細評估之後,我們決定使用Rust,雖然那時候Rust並沒有太多成功的項目案例。我清晰地記得當時選擇一門語言的條件如下。
· 我們需要一門安全的語言,讓我們處理內存和多線程的時候更加遊刃有餘,不用擔心類似垂懸指針、數據爭用等問題。
· 我們需要一門高性能的靜態語言,以便更好地與內存、CPU打交道,不用擔心GC引起的延遲突然上升等問題。
· 我們需要一個強大的包管理係統,以避免陷入編譯構建工具的細節中,也不用為管理多個版本的庫而發愁。
· 我們需要一個友善的社區,在需要時能從這個社區得到幫助,與大家一起成長。
以上這些條件,Rust全部滿足。事實也沒有讓我們失望。我們使用Rust快速地對TiKV進行了迭代。現在,TiKV 不僅大量用在生產環境中,還進入了 CF 基金會,成為了一個在Cloud上麵構建其他服務的原生基礎組件。
但是,我們使用Rust的曆程並不是一帆風順的。在早期,Rust相關的文檔非常稀缺,網上也沒有很好的參考資料,更別提專業係統的 Rust書籍了。所以,當我拿到漢東同學的《Rust編程之道》時,我是非常興奮的。本書不僅介紹了 Rust 的基礎知識,還詳細地解釋了 Rust裏麵非常難以理解的所有權係統、內存模型、並發編程等特性。尤其是所有權這個概念,對很多同學來說,所有權就是從其他語言切換到Rust的第一個攔路虎,而漢東同學在本書中進行了細致清晰的講解,相信大家會有一種“哦,原來如此”的感慨。更難能可貴的是,本書還從工程角度講解了如何使用Rust來編寫健壯的應用程序,提升產品質量。
Rust是一門相對難學的語言,我個人認為它的學習曲線比C++的學習曲線更陡峭,但我相信,通過《Rust編程之道》,大家能快速掌握Rust,體驗使用Rust編程的樂趣,也能更快地在項目中使用Rust來保證程序的健壯性。如果你遇到了困難,不用害怕,你可以很方便地從Rust社區得到幫助。
歡迎來到 Rust的世界!!!
——唐劉,PingCAP首席架構師,TiKV負責人