百度對象存儲系統的架構與演進之路
原創本文是WOT2016互聯網運維與開發者大會的現場干貨, 新一屆主題為WOT2016企業安全技術峰會將在2016年6月24日-25日于北京珠三角JW萬豪酒店隆重召開!
崔燦的演講主要圍繞為什么是對象存儲系統、百度開放云做了什么事、百度開放云云服務化的工作及挑戰以及云服務的未來等內容展開。
什么是對象存儲系統
什么是對象?對象是現實中實際存在的實體,有名字、數據和屬性。一般來說,一個對象生成之后就會永遠存在,不再作修改。在實際的系統中,一個MP3,一個視頻文件,一個日志文件一般都可以認為是對象,而對象存儲系統的重要使用場景也是在這類數據的存儲和訪問,比如說在線音樂視頻播放,日志存儲和處理等。
什么是存儲系統?存儲系統有可靠性、可用性、性能和價格四方面要求。這里崔燦主要介紹了存儲系統可靠性,一般存儲系統可靠性就是指數據不丟失。數據丟失產生的情況無非是磁盤壞掉、整個機器掛掉或整個機房直接掛掉等硬件故障。系統可靠性的決定因素有故障的容忍度和修復時間兩方面,對故障容忍度可以通過做一些冗余的方式來實現。修復時間各個系統實現不一樣。針對硬件故障,崔燦表示這么多年來,像交換機故障,磁盤故障,已經趨于穩定沒有太大進步的空間,是相對比較固定值。所以做系統就是怎么樣提高它對故障的容忍度和減少修復時間。
如何減少修復時間?一,和最開始這個數據放置是相關的,如磁盤故障或者是機器故障,如是兩塊磁盤互為備份,那修復時間取決于磁盤IO,就是一個磁盤量的數據全部拷到另一個磁盤,取決于單盤IO。如把它作一個分散放到所有的節點上去,好處在于恢復時可以從多個源到多個目的的磁盤上拷貝,這可以大大的減少修復的時間,相當于整個集群同時在拷貝一個磁盤上的數據。二,基于百度內部多年經驗,磁盤出現故障時間可根據大數據分析提前預測到,這也大大縮短了修復時間。
百度開放云做了什么事
把KV存儲開放出去
百度內部的KV存儲系統,采用3副本,能容忍單機故障,而且通過分布式修復以及磁盤故障預測,能大幅減少修復時間。百度開放云存儲把KV存儲開放出去,做一個對象存儲,這過程叫做商業化。崔燦表示,這個過程中遇到了兩大挑戰:從用戶角度來看,一是用戶量增加,導致對用戶的幫助會降低,另外一方面直接面對大眾,可能會遭到惡意攻擊。從業務上來看,一方面是網絡環境發生變化,從內網到公網。另外一方面對外部業務的增長并不可預期。
安全性、易用性和性能三角度應對挑戰
安全性。百度開放云存儲把KV存儲開放出去后,從數據和服務安全兩個角度做了改進。數據安全有三個層次,數據不丟(基于可靠存儲,多region, 多az來實現),數據不被非法訪問(基于ak, sk的用戶認證以及基于policy的權限認證),高級安全特性(Https,服務端加密等)。服務安全包括三個方面,用戶間互相影響(通過頻度 & quota服務),惡意攻擊(通過百度私有防攻擊系統以及運營商黑洞清洗來解決),機房地域故障(多region, 多az來解決)。
易用性。通過對用戶上云(網絡、硬盤導入),用戶使用(API、SDK、工具、ts支持、多種解決方案)及運維(按需使用、自動擴縮容、報表、日志、審計、監控……)三個方面來提升用戶的使用體驗。
性能。主要對Http的性能作優化,通過多并發的上傳下載,流量調度,CDN集成等多個方面來提升Http性能。
提供冷存儲、媒體云和數據分析三大解決方案
崔燦表示,百度云存儲從2015年四五月份一直到現在提供不同的解決方案,幫助不同的用戶來使用。第一個階段是內部服務,第二個階段是一個可靠存儲,第三個階段整合百度內部資源,如圖象處理、機器學習、視頻處理等東西,整合一些解決方案給用戶使用。
冷存儲。為把低成本存儲同時提供給內部業務和外部開發者,百度云存儲做了冷備的解決方案。提供一個基本可用的,成本比之前低一倍,但可靠性不會低于之前可靠性的存儲系統,就是和友商同等價格的情況下提供基本的在線服務。
媒體云。關于圖片和媒體處理,做視頻直播、點播、轉播可直接使用。因為百度內部有成熟的方案,如做像手機屏幕的匹配、適配直接包裝,用戶只需要把數據存儲過來,再調到其他地方就可直接播放,來減少對媒體用戶使用的門檻。
數據分析。崔燦表示,百度是做搜索的,很多策略方面如機器學習,Mapreduce等都是非常成熟。所以可以針對用戶把百度內部的機器學習,計算功能給整合進來。如用戶做數據處理或策略方面的事,只需要把數據上傳上來直接做數據處理。
百度開放云未來要做的事
崔燦表示,未來解決方案和存儲相關有四方面:一,繼續做冷備或一些歸檔等事。 二,做百度CDN資源結合,形成類似于存儲分發,供給一些APP下載或者視頻播放的服務使用。三,百度內部有相對多年媒體方面的資源積累,之后也會不斷的把百度內部的技術包裝陸續公開出來。四,對于機器學習方面,會繼續不斷的把百度內部的資源爆發出來。
【演講視頻】
http://edu.51cto.com/lesson/id-100746.html
http://edu.51cto.com/lesson/id-101079.html
【講師簡介】
崔燦,百度開放云資深工程師,主要做百度開放云存儲工作,內容有對象存儲、塊存儲和開放云CDN等。之前主要經歷主要是分布式存儲和在線檢索兩部分。