TStor?OneCOS簡介
TStor OneCOS海量對象存儲(后面簡稱OneCOS),是基于騰訊云公有云存儲架構(gòu)打造的完全自研的分布式軟件定義存儲,輕松支持單桶萬億對象和EB級容量,集群容量無限伸縮,同時支持高密大盤等多種硬件機(jī)型。本期我們來聊聊單桶萬億對象數(shù)的核心能力。
背景
云計算、5G、大數(shù)據(jù)、AI等創(chuàng)新技術(shù)的快速發(fā)展,引發(fā)了海量非結(jié)構(gòu)化數(shù)據(jù)的規(guī)?;奂?,數(shù)百PB容量或千百億數(shù)量的海量數(shù)據(jù)存儲需求變得越發(fā)普遍。
以智能汽車自動駕駛訓(xùn)練場景為例:一輛汽車約搭載8個攝像頭,包括前向3顆、周視4顆、后視1顆,每個攝像頭以30幀/秒的速度拍攝12小時,將會產(chǎn)生約1036萬多幀的圖片,如果保存近1年100輛車的數(shù)據(jù),就是接近3800億的數(shù)據(jù)。即使對數(shù)據(jù)進(jìn)行自動化過濾處理,剩下需要精確標(biāo)注的數(shù)量仍然非常驚人,這還不包括除攝像頭之外其他傳感器和流程的數(shù)據(jù)。
? ? ? ??
?
某汽車廠商最初使用公有云對象存儲,存儲量已經(jīng)達(dá)到千億對象數(shù),存在單桶超過百億文件數(shù)的桶。現(xiàn)在由于合規(guī)、成本等因素選擇自建私有云對象存儲全量替換云上對象。由于業(yè)務(wù)使用便利和配置效率,要求存儲文件桶必須和云上一樣的劃分命名,核心要求就是單桶對象數(shù)規(guī)模和云上一致,單桶需要支持超過千億的對象數(shù),以滿足未來數(shù)據(jù)持續(xù)增長。
主流存儲廠商為了保證存儲的性能、穩(wěn)定性及可靠性,通常會對單集群、單個桶等規(guī)格做出限制,擁有海量數(shù)據(jù)的客戶隨業(yè)務(wù)增長需要拆分多個集群,大大降低了使用效率,同時也增加了管理和運(yùn)維的復(fù)雜度。
OneCOS天然適應(yīng)這種大規(guī)模海量數(shù)據(jù)需求,和公有云COS一致,每個存儲桶中最大對象數(shù)不限。如某用戶單桶超過55PB、總文件數(shù)超過5000億:
數(shù)據(jù)和索引存儲分離
首先,OneCOS通過把對象內(nèi)容的存儲和元數(shù)據(jù)的存儲的解耦,做成兩套獨(dú)立的系統(tǒng),并且每個系統(tǒng)對外的接口盡量的簡單,高內(nèi)聚低耦合,方便各個系統(tǒng)獨(dú)立演進(jìn)和迭代。元數(shù)據(jù)存儲和對象內(nèi)容存儲分離的結(jié)構(gòu)如下圖:
? ? ? ??
OneCOS引入了全局統(tǒng)一的分布式元數(shù)據(jù)集群,使用一套元數(shù)據(jù)存儲系統(tǒng)真正意義上解決了單存儲桶規(guī)模的局限性。在對象存儲系統(tǒng)中,既要存儲對象的內(nèi)容也要存儲對象的元數(shù)據(jù),這兩個存儲對系統(tǒng)的要求是不一樣的,對象內(nèi)容的存儲在接口上只需要上傳、下載、刪除就可以了,并且對象的內(nèi)容一般都比較大,在存儲的時候需要做切分;而對象的元數(shù)據(jù),一般value都比較小,并且元數(shù)據(jù)的操作在接口上除了增加、刪除、查詢之后,還需要支持有序的list操作,另外元數(shù)據(jù)的操作還要有一定的事務(wù)的能力,以支持用戶對同一個對象的多并發(fā)的操作等。
索引存儲支持多個表空間? ??
OneCOS的元數(shù)據(jù)存儲在業(yè)務(wù)上支持不同的表空間,比如說上傳中的對象、已刪除的對象、上傳完成的對象是在不同的表空間中。OneCOS元數(shù)據(jù)的表空間類似于數(shù)據(jù)庫中的表,每個表空間是相互獨(dú)立的,在訪問元數(shù)據(jù)的時候需要先指定表空間。
通過表空間這一層的抽象,使元數(shù)據(jù)在邏輯的組織上更加的清晰,方便對不同的表空間施加不同的存儲優(yōu)化和QoS訪問控制等。
hash加range的數(shù)據(jù)組織形式
OneCOS對象存儲對外的ListObjects接口要求對象的列表要能順序的列出,很顯然這個要求對象的列表在底層存儲的時候要按照順序來存儲,OneCOS也是這樣做的,但同時不同的存儲桶之間并不需要按照全局的順序來存儲,因此OneCOS這邊最終的存儲方案是按照hash加range的方式來組織元數(shù)據(jù)的。對appid和bucket,按照hash來打散,對某個存儲桶的對象列表,按照range有序的存儲到某些小表中,并且當(dāng)小表比較大時,支持分裂成多個小表,并在整個索引元數(shù)據(jù)集群中均衡分布。
? ? ? ?
另外考慮有的存儲桶使用時間作為對象名稱的使用場景,比如說存儲桶中存儲的是日志文件,日志文件是按照時間來命名的,這樣元數(shù)據(jù)按照range有序來存儲對象列表的時候會發(fā)現(xiàn)新對象的上傳總是在range最后的一個小區(qū)間中,對應(yīng)到元數(shù)據(jù)存儲的某單個小表上,這樣這個小區(qū)間對應(yīng)的小表就會成為整個存儲桶的瓶頸,雖然存儲桶很大,但是上傳的key在range中比較集中,會導(dǎo)致元數(shù)據(jù)單小表的能力成為整個bucket的瓶頸。為了應(yīng)對這種場景,OneCOS在分hash和range的時候,也支持在對象名上做hash,這樣可以把熱點的對象在小表上打散,提升存儲桶整體的性能。為了應(yīng)對對象列表hash打散對list操作的性能影響,OneCOS邏輯層針對list的操作做了多路并發(fā)的緩存和加速。
cas事務(wù)支持的能力? ?
在大規(guī)模對象的處理上不可避免的會遇到?jīng)_突的問題,比如說多個并發(fā)同時在上傳、刪除、下載同一個對象,OneCOS通過分表空間以及單key的cas能力來保證沖突處理過程中的正確性。
對象索引表空間的key是對象的名稱,value指向數(shù)據(jù)索引;數(shù)據(jù)索引表空間的key是數(shù)據(jù)的unique key,value指向這個數(shù)據(jù)在底層存儲上的相關(guān)的信息。租戶的每次上傳操作都對應(yīng)唯一的一個數(shù)據(jù)索引,上傳完成之后,再通過cas的操作更新對象索引表空間中這個對象的指向。通過這種方式來解決多路并發(fā)對同一個對象操作沖突的處理。文章來源:http://www.zghlxwxcb.cn/news/detail-784164.html
綜上,OneCOS單桶支持萬億對象的能力,具有絕對領(lǐng)先的私有云和混合云數(shù)據(jù)存儲優(yōu)勢,和公有云規(guī)格無縫銜接,可以輕松幫助數(shù)據(jù)中心快速實現(xiàn)真正的海量云存儲,確保滿足未來數(shù)據(jù)需求。文章來源地址http://www.zghlxwxcb.cn/news/detail-784164.html
到了這里,關(guān)于TStor OneCOS 技術(shù)專欄——輕松單桶萬億的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!