阿里云OSS性能與擴(kuò)展性最佳實(shí)踐

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

Hippopx (5).jpg

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

背景信息

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

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

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

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

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

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

解決方案

下面提供了兩個(gè)將順序前綴改為隨機(jī)性前綴的方法。

向文件名添加十六進(jìn)制哈希前綴

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

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

...

針對(duì)這種情況,您可以對(duì)客戶ID計(jì)算哈希(即MD5),并取若干字符的哈希前綴作為文件名的前綴。假如取4個(gè)字符的哈希前綴,結(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個(gè)字符組成的十六進(jìn)制哈希作為前綴,則每個(gè)字符有0~9以及a~f共16種取值,4個(gè)字符共有16 4=65536種可能的字符組合。那么在存儲(chǔ)系統(tǒng)中,這些數(shù)據(jù)理論上會(huì)被持續(xù)劃分至最多65536個(gè)分區(qū),以每個(gè)分區(qū)操作2000次/秒的性能瓶頸標(biāo)準(zhǔn),再結(jié)合您業(yè)務(wù)的請求速率,可以評(píng)估hash桶的個(gè)數(shù)是否合適。

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

反轉(zhuǎn)文件名

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

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)時(shí)間戳前綴來避免文件名包含順序前綴,反轉(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ù)字代表毫秒時(shí)間,會(huì)有1000種取值。而第4位數(shù)字,每1秒鐘就會(huì)改變一次。同理第5位數(shù)字每10秒鐘就會(huì)改變一次。以此類推,反轉(zhuǎn)文件名后,極大地增強(qiáng)了前綴的隨機(jī)性,從而將負(fù)載壓力均勻地分?jǐn)傇诟鱾€(gè)分區(qū)上,避免出現(xiàn)性能瓶頸。

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