阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)
摘要:?將存儲與計算分開來大有意義,對于部署的云數據庫而言更是如此。為此,阿里巴巴推出了一種新開發的名為PolarFS的分布式文件系統,旨在確保低延遲和高可用性。這個文件系統與阿里云上自己的PolarDB數據庫服務搭配使用。
將存儲與計算分開來大有意義,對于部署的云數據庫而言更是如此。為此,阿里巴巴推出了一種新開發的名為PolarFS的分布式文件系統,旨在確保低延遲和高可用性。這個文件系統與阿里云上自己的PolarDB數據庫服務搭配使用。
像PolarDB這樣的云數據庫服務(或者各大云提供商的平臺上的同類云數據庫服務)擁有一個更具可擴展性且安全的基礎以便充分利用容器,并以快速I/O、檢查點和數據共享來支持后端存儲集群,從而充分發揮將存儲資源和計算資源分開來的這種做法具有的好處。
然而,由于面向數據庫服務的云I/O領域的種種創新,很難把大幅加快讀寫速度的硬件創新整合起來,比如包括RDMA和NVMe。從性能的角度來看,阿里巴巴的架構值得關注,原因在于它利用了RDMA、NVMe和SPDK等方面最新的創新技術,因而提供了與固態硬盤(SSD)上的本地文件系統不相上下的寫入性能。
“PolarFS采用了新興的硬件和最先進的優化技術,比如操作系統旁路(OS bypass)和零拷貝(zero-copy),因而得以擁有與SSD上的本地文件系統相當的延遲。為了滿足數據庫應用的高IOPS要求,我們開發了一種新的共識協議ParallelRaft。ParallelRaft放寬了Raft嚴格按順序寫入的要求,又不犧牲存儲語義的一致性,從而提升了PolarFS并行寫入的性能。在高負載情況下,我們的方法可以將平均延遲縮短一半,將系統帶寬翻番。PolarFS在用戶空間中實施類似POSIX的接口,這讓POLARDB能夠僅需少許改動即可提升性能。”
擁有數據庫服務的云提供商提供最新的硬件調優從而提供高性能可能聽起來合情合理,但實際操作起來不像聽起來那么簡單。正如阿里巴巴的研究人員解釋的那樣,云提供商使用實例存儲作為服務的基礎,使用本地SSD和高I/O虛擬機實例用于數據庫。但是這種方法限制了容量,規模上去后更是如此。
此外,由于數據庫需要自己處理復制,因此可靠性有所降低。最后,實例存儲在其核心使用通用文件系統,試圖采用RDMA或基于PCIe的SSD以提升性能時,內核與用戶空間之間的消息傳遞成本帶來了龐大的開銷。
阿里巴巴自己的PolarDB服務過去存在著上述限制。現在,PolarFS已準備好充分利用I/O方面新的提升,包括RDMA和NVMe SSD,并結合用戶空間中的輕量級網絡堆棧和I/O堆棧,避免在內核中被鎖定。PolarFS API類似POSIX,原因在于它可以編譯到數據庫進程中,并且可以取代操作系統提供的文件系統接口,而I/O路徑繼續留在用戶空間中。
阿里巴巴團隊還特別指出,PolarFS數據平面的I/O模型旨在消除鎖定,并避免關鍵數據路徑上的上下文切換(context switch)。“還消除了所有不必要的內存副本,而直接內存訪問用于在主內存和RDMA網卡/ NVMe磁盤之間傳輸數據。”縮短延遲的效果在這環節來得尤為明顯。
阿里巴巴在開發過程中也不得不考慮到可靠性。其硬件調優的核心是用于解決共識的Raft協議。“部署在云生產環境中的分布式文件系統通常有成千上萬臺計算機。在這樣的龐大規模下,硬件或軟件錯誤引起的故障很常見。因此,需要一種共識協議來確保所有已提交的修改都不會在極端情況下丟失,而副本總是可以達成協議,變成比特方面一模一樣。”由于一開始就恪守這個理念,阿里巴巴開發出了ParallelRaft,確保這項功能在大規模環境下照樣正常使用。
PolarFS的延遲是4000個隨機寫入約48μs,這相當接近本地SSD上的Ext4的延遲(約10μs),而相比之下,CephFS的延遲卻長達約760μs。PolarFS的平均隨機寫入延遲比本地Ext4慢1.6倍到4.7倍,而CephFS的平均隨機寫入延遲比本地Ext4慢6.5倍到75倍,這意味著分布式PolarFS幾乎提供了與本地Ext4相同的性能。
關于性能結果和硬件調優的完整內容可以在這篇詳細的論文:
?
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的阿里推出 PolarFS 分布式文件系统:将存储与计算分开,提升云数据库性能(附论文)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与机器学习算法有关的数据结构
- 下一篇: 【2018开年知识盛会】15位大咖直播分