雅虎郵件 雅虎 PB 級云對象存儲 COS 解決方案的實踐與探索
wujiai
Yahoo 存儲了 500 億個 EB 的數(shù)據(jù),包括用戶提交的照片、視頻、電子郵件和博客文章,以及超過 2500 億個對象。對象存儲以每年 20%-25% 的速度增長,這主要是由于移動、圖像、視頻和用戶量的增長。為此,Yahoo 選擇了軟件定義存儲,以最大限度地提高存儲成本效益,同時確保耐用性和延遲。
Yahoo 的對象存儲需求
什么是對象存儲?圖像、照片、視頻、文檔、電子表格、演示文稿和電子郵件附件都是典型的對象。這類數(shù)據(jù)的典型特征是“一次寫入,多次讀取”。通常,雅虎會使用一些存儲設(shè)備進(jìn)行對象存儲。然而,雅虎是許多人數(shù)字信息生活的領(lǐng)導(dǎo)者,其對對象存儲的需求日益增加。此外,由于應(yīng)用程序?qū)?shù)據(jù)訪問方式、數(shù)據(jù)可靠性、數(shù)據(jù)訪問延遲和數(shù)據(jù)存儲成本的要求各不相同。雅虎需要考慮成本效益,同時也要考慮不同應(yīng)用程序的需求。雅虎需要在對象存儲需求上做出多重權(quán)衡。需要軟件定義存儲的靈活性來做出權(quán)衡。
為什么要選擇軟件定義存儲?
軟件定義存儲的三大優(yōu)勢:
Cloud Store(COS)是雅虎基于商用硬件的軟件定義存儲解決方案。雅虎與雅虎合作,已初步部署了數(shù)PB的該解決方案。并計劃在2015年將COS打造為多租戶托管服務(wù),繼續(xù)支持雅虎郵箱,并將COS部門數(shù)量增加十倍。未來,COS將存儲數(shù)百PB的數(shù)據(jù)!
COS 使用 Ceph
在 COS 的部署中采用了 Ceph 存儲技術(shù),在評估了開源解決方案 Swift 和 Ceph,以及一些商業(yè)解決方案之后,我們最終選擇了 Ceph,因為它可以通過固有的架構(gòu)將對象存儲、塊存儲、文件存儲整合到一個存儲層中,同時由于它是開源的,它提供的靈活性很好地滿足了雅虎的需求。
部署架構(gòu)
COS 部署由模塊化的 Ceph 集群組成,每個集群都被視為一個 POD。同時部署多個這樣的 Ceph 集群會形成一個 COS “超級組()”,如下圖所示。對象均勻分布在超級組中的所有集群中,我們使用專有的哈希機(jī)制來分配對象。哈希算法通過應(yīng)用程序中嵌入的客戶端庫實現(xiàn)。
經(jīng)過多次軟件調(diào)整和試運(yùn)行,現(xiàn)在每個 Ceph 集群都可以部署大約 3PB 的原始數(shù)據(jù),并且在正常運(yùn)行和故障恢復(fù)期間都能提供可預(yù)測的延遲。由于每個集群都有數(shù)十臺商用服務(wù)器和數(shù)百個磁盤,因此很可能會發(fā)生故障。在故障恢復(fù)期間,由于需要重新平衡對象,磁盤和網(wǎng)絡(luò)活動會很頻繁,這最終會增加延遲。通過限制每個集群的大小,我們可以控制數(shù)據(jù)恢復(fù)期間消耗的資源并確保 SLA。
Yahoo 用戶自然希望他們的圖片、視頻和電子郵件附件能夠永久保存,并可以從世界任何地方快速訪問。這首先需要對數(shù)據(jù)進(jìn)行高“耐用性”保證,這通常是通過存儲系統(tǒng)中的冗余或編碼來實現(xiàn)的。冗余可以通過復(fù)制額外的數(shù)據(jù)副本來實現(xiàn)。另一方面,它可以通過簡單的奇偶校驗或更復(fù)雜的機(jī)制(如擦除編碼)在編碼中實現(xiàn)。擦除編碼是一種將對象分解成片段并將它們存儲在多個磁盤上的方法,通過一些冗余片段來容忍錯誤。
每個集群的可用容量取決于所使用的“耐久性”技術(shù)。我們目前使用的“糾刪碼”技術(shù)將每個對象拆分成八個數(shù)據(jù)和三個編碼片段。這種機(jī)制稱為 8/3 糾刪碼,可以同時承受最多三臺服務(wù)器和/或磁盤故障,因為它僅消耗約 30% 的開銷。這比復(fù)制的 200% 開銷要低得多。
這兩種持久性技術(shù)提供不同的價格點(diǎn)和延遲特性。復(fù)制具有較低的延遲但成本較高,而擦除編碼可以降低成本(有時高達(dá) 50%)但延遲較高。我們可以通過使用不同的存儲介質(zhì)(例如 SSD、磁盤和 SMR 設(shè)備)提供不同級別的服務(wù)以滿足不同應(yīng)用程序的需求。
從技術(shù)上講雅虎郵件,隨著存儲需求的增加,可以通過增加子集群的容量來擴(kuò)展 COS 超級集群 ()。但是,這將導(dǎo)致子集群之間的數(shù)據(jù)重新平衡,這意味著長時間頻繁的磁盤和網(wǎng)絡(luò)活動,從而影響 SLA。為了擴(kuò)展 COS,我們更愿意將 COS“超級集群”的添加視為添加存儲場。這種方法與我們當(dāng)前基于設(shè)備的存儲解決方案一致。
延遲優(yōu)化
COS 為 Yahoo 的眾多應(yīng)用提供服務(wù),需要保證 SLA 延遲,并提供一致、高質(zhì)量的用戶體驗。Yahoo 對 Ceph 進(jìn)行了 40 項優(yōu)化,平均延遲改善了 50%,99.99% 級別延遲改善了 70%。圖 2 展示了 Ceph 讀延遲優(yōu)化前后的性能對比。
優(yōu)化主要針對以下幾個方面:
未來發(fā)展
以上提到的和目前使用的都是 COS 在 Yahoo 的用途,Yahoo 的其他用例有不同的工作負(fù)載模型和不同的對象存儲權(quán)衡。為了讓 COS 在 Yahoo 得到更廣泛的應(yīng)用,我們未來會針對這些方面進(jìn)行開發(fā)。
原文:Yahoo Cloud Store - at Scale








