阿里云OSS性能與擴展性最佳實踐

來源: 阿里云
作者:阿里云
時間:2020-12-17
16455
如果您在上傳大量文件時,在命名上使用了順序前綴(如時間戳或字母順序),可能會出現(xiàn)大量文件索引集中存儲于存儲空間中的某個特定分區(qū)的情況。此時如果您的請求次數(shù)過多,會導(dǎo)致請求速率下降。出現(xiàn)這種問題時,建議您為Object的名稱增加隨機前綴。

Hippopx (5).jpg

如果您在上傳大量文件時,在命名上使用了順序前綴(如時間戳或字母順序),可能會出現(xiàn)大量文件索引集中存儲于存儲空間中的某個特定分區(qū)的情況。此時如果您的請求次數(shù)過多,會導(dǎo)致請求速率下降。出現(xiàn)這種問題時,建議您為Object的名稱增加隨機前綴。

背景信息

OSS按照文件名UTF-8編碼的順序?qū)τ脩魯?shù)據(jù)進行自動分區(qū),從而能夠處理海量文件,以及承載高速率的客戶請求。不過,如果您在上傳大量文件時,在命名上使用了順序前綴(如時間戳或字母順序),可能會導(dǎo)致大量文件索引集中存儲于某個特定分區(qū)。當您的請求速率超過2000次/秒時(下載、上傳、刪除、拷貝、獲取元數(shù)據(jù)信息等操作算1次操作,批量刪除N個文件、列舉N個文件等操作算N次操作),會帶來如下后果:

該分區(qū)成為熱點分區(qū),導(dǎo)致分區(qū)的I/O能力被耗盡,或被系統(tǒng)自動限制請求速率。

熱點分區(qū)的存在會觸發(fā)系統(tǒng)進行持續(xù)的分區(qū)數(shù)據(jù)再均衡,這個過程可能會延長請求處理時間。

說明分區(qū)數(shù)據(jù)再均衡是依賴于對當前系統(tǒng)狀態(tài)、處理能力等信息做各種智能分析后進行的,并不是某個固定的拆分規(guī)則。所以分區(qū)數(shù)據(jù)再均衡后,使用了順序前綴的文件可能還會處于高熱點的分區(qū)當中。

以上情況會降低OSS的水平擴展效果,導(dǎo)致客戶的請求速率受限。

要解決這個問題,就要消除文件名中的順序前綴。您可以在文件名前綴中引入某種隨機性,這樣文件索引(以及I/O負載)就會均勻分布在多個分區(qū)。

解決方案

下面提供了兩個將順序前綴改為隨機性前綴的方法。

向文件名添加十六進制哈希前綴

如下所示,若您使用日期與客戶ID生成文件名,則會包含順序時間戳前綴:

sample-bucket-01/2017-11-11/customer-1/file1

sample-bucket-01/2017-11-11/customer-2/file2

sample-bucket-01/2017-11-11/customer-3/file3

...

sample-bucket-01/2017-11-12/customer-2/file4

sample-bucket-01/2017-11-12/customer-5/file5

sample-bucket-01/2017-11-12/customer-7/file6

...

針對這種情況,您可以對客戶ID計算哈希(即MD5),并取若干字符的哈希前綴作為文件名的前綴。假如取4個字符的哈希前綴,結(jié)果如下:

sample-bucket-01/2c99/2017-11-11/customer-1/file1

sample-bucket-01/7a01/2017-11-11/customer-2/file2

sample-bucket-01/1dbd/2017-11-11/customer-3/file3

...

sample-bucket-01/7a01/2017-11-12/customer-2/file4

sample-bucket-01/b1fc/2017-11-12/customer-5/file5

sample-bucket-01/2bb7/2017-11-12/customer-7/file6

...

加入4個字符組成的十六進制哈希作為前綴,則每個字符有0~9以及a~f共16種取值,4個字符共有16 4=65536種可能的字符組合。那么在存儲系統(tǒng)中,這些數(shù)據(jù)理論上會被持續(xù)劃分至最多65536個分區(qū),以每個分區(qū)操作2000次/秒的性能瓶頸標準,再結(jié)合您業(yè)務(wù)的請求速率,可以評估hash桶的個數(shù)是否合適。

如果您想要列出文件名中帶有特定日期的文件,例如列出sample-bucket-01里帶有2017-11-11的文件,您只要對sample-bucket-01進行列舉(即通過多次調(diào)用ListObject接口,分批次地獲得sample-bucket-01下的所有文件),然后合并帶有該日期的文件即可。

反轉(zhuǎn)文件名

如下所示,若您使用了毫秒精度的Unix時間戳生成文件名,同樣屬于順序前綴:

sample-bucket-02/1513160001245.log

sample-bucket-02/1513160001722.log

sample-bucket-02/1513160001836.log

sample-bucket-02/1513160001956.log

...

sample-bucket-02/1513160002153.log

sample-bucket-02/1513160002556.log

sample-bucket-02/1513160002859.log

...

這種情況可以考慮通過反轉(zhuǎn)時間戳前綴來避免文件名包含順序前綴,反轉(zhuǎn)后結(jié)果如下:

sample-bucket-02/5421000613151.log

sample-bucket-02/2271000613151.log

sample-bucket-02/6381000613151.log

sample-bucket-02/6591000613151.log

...

sample-bucket-02/3512000613151.log

sample-bucket-02/6552000613151.log

sample-bucket-02/9582000613151.log

...

由于文件名中的前3位數(shù)字代表毫秒時間,會有1000種取值。而第4位數(shù)字,每1秒鐘就會改變一次。同理第5位數(shù)字每10秒鐘就會改變一次。以此類推,反轉(zhuǎn)文件名后,極大地增強了前綴的隨機性,從而將負載壓力均勻地分攤在各個分區(qū)上,避免出現(xiàn)性能瓶頸。

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于阿里云,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
阿里云助力《誅仙世界》端游正式開服!
阿里云助力《誅仙世界》端游正式開服!
近?,完美世界游戲歷時多年打造的新國?仙俠MMORPG端游《誅仙世界》在阿?云上正式開服。
阿里云
云服務(wù)
2024-12-292024-12-29
一文詳解阿里云AI大基建
一文詳解阿里云AI大基建
面向AI時代,阿里云基礎(chǔ)設(shè)施是如何創(chuàng)新與發(fā)展的?計算、網(wǎng)絡(luò)、存儲、服務(wù)器、集群、可觀測等,阿里云全新升級的AI Infra到底有哪些重磅更新?
阿里云
云服務(wù)
2024-11-022024-11-02
AI時代云安全新范式,阿里云安全能力全線升級!
AI時代云安全新范式,阿里云安全能力全線升級!
AI時代,云安全面臨著新的挑戰(zhàn),不僅要持續(xù)面對以往的傳統(tǒng)問題,更需要全新理念落地于產(chǎn)品設(shè)計、技術(shù)演進、架構(gòu)設(shè)計,才能實現(xiàn)效果、性能、和成本的最優(yōu)解。
AI
阿里云
云服務(wù)
2024-09-272024-09-27
連續(xù)四年!阿里云領(lǐng)跑中國公有云大數(shù)據(jù)平臺
連續(xù)四年!阿里云領(lǐng)跑中國公有云大數(shù)據(jù)平臺
近日,國際數(shù)據(jù)公司(IDC)發(fā)布《中國大數(shù)據(jù)平臺市場份額,2023:數(shù)智融合時代的真正到來》報告——2023年中國大數(shù)據(jù)平臺公有云服務(wù)市場規(guī)模達72.2億元人民幣,其中阿里巴巴市場份額保持領(lǐng)先,占比達40.2%,連續(xù)四年排名第一。
阿里云
云服務(wù)
2024-09-182024-09-18
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家