業(yè)務上云的企業(yè)越來越多,怎樣提高云存儲的高可用性蛋辈,就顯的很重要了属拾!

上一篇內容我們說到了?COS 企業(yè)業(yè)務上云的文章。本文將著重介紹如何盡可能的提高騰訊云對象存儲 COS 的可用性冷溶。

COS 提供了基于 HTTP/HTTPS 的上傳接口渐白,對于 UGC 的場景,客戶端直傳 COS 的用法十分普遍逞频。由于 COS 的存儲桶是分布在具體的某個地域纯衍,比如某個客戶的存儲桶位于上海園區(qū),但是其客戶遍布全國各地乃至全球海外虏劲,偏遠地區(qū)以及跨國的訪問及其不穩(wěn)定托酸,如何在錯綜復雜的網絡環(huán)境下提高客戶端上傳文件的成功率成為讓客戶頭疼的問題,下面我們將帶著這個問題一步步去尋求答案柒巫。

一. 客戶端斷點續(xù)傳

客戶端的上傳內容一般分為圖片類的小文件以及視頻類的大文件励堡,騰訊云對象存儲 COS 提供了簡單上傳以及分塊上傳這兩種接口來上傳不同大小的文件。

對于小于1MB的圖片類小文件堡掏,直接使用簡單上傳接口即可应结。

對于大于1MB的視頻類大文件,使用分塊上傳接口把大文件切分為多個小的分塊來上傳(每個分塊大小為1MB - 5GB泉唁,最后一個分塊可以小于1MB)鹅龄。

我們知道,在網絡傳輸中分塊越小亭畜,那么傳輸成功率越高扮休,也方便對小的分塊進行快速重試。

分塊上傳文件拴鸵,分為以下3個步驟:

1. 初始化一個分塊上傳玷坠,服務端返回一個用于分塊上傳的UploadId蜗搔;

2. 并發(fā)上傳多個分塊文件;

3. 完成指定 UploadId 的分塊上傳八堡,合成一個完整的文件樟凄;

掃描 COS 的訪問日志,我們發(fā)現(xiàn)有不少用戶沒能以最優(yōu)雅的方式使用分塊上傳接口兄渺。分塊上傳方式上傳一個大文件時(分塊數(shù)最多10000個)缝龄,在其中某一個分塊上傳失敗之后,就立馬放棄掉這個文件挂谍,重新發(fā)起一個新的上傳任務叔壤,這樣浪費了大量的時間來進行重試,使得上傳的效率低下口叙。

COS 后端會永久保存一個未完成上傳的 UploadId(可以主動使用碎片清理接口來清理未完成的分塊上傳)百新,如果我們可以記錄下步驟1中的 UploadId,列出已經上傳的分塊庐扫,重新從斷點處進行續(xù)傳則可以大大提高上傳接口的可用性。

COS 提供了多種語言的 SDK 封裝好了對應的斷點續(xù)傳接口仗哨,在對應的 COS SDK 中找到高級上傳接口即可使用斷點續(xù)傳功能形庭。

二. 跨地域復制

COS最新推出的跨地域復制功能,可以在不同存儲區(qū)域的存儲桶中自動厌漂、異步地復制增量對象萨醒。利用此特性可以做到跨區(qū)域級別的容災、就近訪問提高可用性苇倡。隨著公司越來越多的業(yè)務出海富纸,如何提高跨國訪問的可用性成為業(yè)務的痛點,使用跨地域復制功能可以極大提升業(yè)務的可用性旨椒。

1晓褪、跨地域復制架構

開啟跨地域復制的兩個存儲桶必須提前打開版本控制功能,并且位于 COS 的不同區(qū)域综慎,COS 現(xiàn)在已經支持雙向以及一對多的同步配置涣仿。客戶對文件產生的所有增量操作示惊,包括刪除文件操作(開啟多版本的情況下刪除文件操作實際上是創(chuàng)建一個 0 字節(jié)的特殊 delete marker 文件)都會經由源桶通知 costrsf 模塊好港,任務入 CMQ 隊列成功之后則返回成功,后續(xù)由 costrsf 模塊異步的同步文件到目的存儲桶米罚,所有的元信息以及訪問控制信息 ACL 都會原封不動的同步到目的端钧汹,需要注意的是,目的端文件的版本號會和源文件的版本號也保持一致录择。源文件會維持一個 x-cos-replication-status 字段來保存跨地域復制任務的狀態(tài)拔莱,客戶可以通過 HEAD Object 接口來查詢文件的復制狀態(tài)碗降。

這里大家可能會有一個疑問,為什么跨地域復制必須提前打開版本控制功能辨宠。

我們設想一個非常常見的場景遗锣,如果源桶同時上傳了多個路徑相同的文件或者目的桶也在上傳同名文件,由于跨地域復制的任務是異步進行的嗤形,無法保證文件寫入的最終一致性精偿。由于源文件和目的文件的版本號是保持一致的,而且版本號是根據(jù)時間戳生成的赋兵,那么在索引側就是有序的笔咽,最終可以保證多個版本的文件都能按照正確的時序投遞到目的存儲桶。

2霹期、在COS控制臺上設置跨地域復制

控制臺支持一對一以及一對多的跨地域復制設置叶组。

進入控制臺在左側導航欄單擊【存儲桶列表】,然后選擇單擊需要配置跨地域復制的源存儲桶历造,進入存儲桶詳情界面甩十。

單擊左側的【高級配置】,進入存儲桶的高級配置頁吭产,向下找到【跨地域復制】管理項侣监,單擊【新增規(guī)則】進入跨地域復制規(guī)則配置狀態(tài)。

3臣淤、在SCF控制臺上設置跨地域復制回調

公司的游戲業(yè)務需要將游戲安裝包分發(fā)到海外的存儲桶橄霉,使用跨地域復制功能,可以就近上傳到廣州的存儲桶邑蒋,保證上傳的成功率和速度姓蜂,然后自動復制到海外的存儲桶中。如何通知到業(yè)務方安裝包已經成功同步到海外存儲桶医吊,首先想到的方案是通過查詢接口钱慢,不停的輪詢源文件x-cos-replication-status 狀態(tài),當 x-cos-replication-status=Complete 時遮咖,則可以認為文件同步成功滩字。

更為優(yōu)雅的方式則是當跨地域復制完成時,由 COS 發(fā)出回調消息到 SCF 觸發(fā)特定的業(yè)務邏輯來通知到業(yè)務方御吞。

三. 全球加速

1麦箍、全球加速原理

騰訊云對象存儲 COS 全球加速功能利用全局鏈路的自動測速功能,智能路由解析用戶請求陶珠,選擇最優(yōu)網絡訪問鏈路挟裂,實現(xiàn)請求的就近接入。

利用全球分布的云機房揍诽,幫助全球各地用戶快速訪問最近的接入層诀蓉,提升業(yè)務訪問成功率和穩(wěn)定性栗竖。

使用全球加速功能就近接入之后,客戶端到接入層的"加速"實際上是渠啤,由穩(wěn)定快速的內網專線網絡傳輸鏈路狐肢,來代替外網不穩(wěn)定的跨國或跨地域的訪問鏈路。

2沥曹、使用方式及加速效果

利用博瑞第三方測評工具份名,我們將 COS 的存儲桶設置在了上海園區(qū),使用COS的普通上傳域名以及加速上傳域名妓美,在全球各個撥測點進行1MB大小文件的上傳測試僵腺,從上圖我們可以明顯的看到亞洲、歐洲壶栋、美洲的上傳效果得到了顯著的提升辰如。對于中國本土的上傳提升效果,我們將使用加速效果已經得到某個客戶認可的某款 APP 的實測數(shù)據(jù)來進行展示贵试。

上圖是某客戶 UGC APP 采樣了中國西北地區(qū)的普通域名和加速域名上傳接口的成功率數(shù)據(jù)琉兜,我們可以清晰的看到新疆、西藏毙玻、內蒙古等地的上傳成功率都維持在99%之上呕童,西北地區(qū)的上傳成功率平均提高了2%~3%∠海客戶反饋,APP 端上的整體成功率由97%提升到了99.5%奸汇,顯著的加速效果施符,讓我們得到了客戶的認可。

目前 COS 全球加速功能暫時處于產品公測期擂找,如果您需要使用戳吝,可提交內測申請。相比于跨地域復制贯涎,用戶不需要支付跨地域存儲桶的存儲費用听哭,也不需要維護額外的邏輯去通知業(yè)務方復制任務的成功。只需要在 SDK 中按照以下方式改變 endpoint 即可:

# appid 已在配置中移除,請在參數(shù) Bucket 中帶上 appid塘雳。Bucket 由 BucketName-APPID 組成#1.設置用戶配置,包括 secretId陆盘,secretKey 以及 Regionsecret_id='COS_SECRETID'# 替換為用戶的 secretIdsecret_key='COS_SECRETKEY'# 替換為用戶的 secretKeyregion='ap-beijing'# 替換為用戶的 Regionendpoint='cos.accelerate.myqcloud.com'# 替換為加速域名的 endpointconfig=CosConfig(Region=region,Endpoint=endpoint,SecretId=secret_id,SecretKey=secret_key)#2.獲取客戶端對象client=CosS3Client(config)

四. 總結

COS 提供了多種擴展功能來提高用戶的可用性,如果上傳點比較固定或者希望同時具備異地容災以及就近訪問的功能败明,可以選擇跨地域復制功能隘马,如果不希望支付額外的存儲費用來提高 UGC 場景下的上傳成功率,那么可以選擇 COS 全球加速妻顶。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末酸员,一起剝皮案震驚了整個濱河市蜒车,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌幔嗦,老刑警劉巖酿愧,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邀泉,居然都是意外死亡嬉挡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門呼渣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棘伴,“玉大人,你說我怎么就攤上這事屁置『缚洌” “怎么了?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵蓝角,是天一觀的道長阱穗。 經常有香客問我,道長使鹅,這世上最難降的妖魔是什么揪阶? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮患朱,結果婚禮上鲁僚,老公的妹妹穿的比我還像新娘。我一直安慰自己裁厅,他們只是感情好冰沙,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著执虹,像睡著了一般拓挥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上袋励,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天侥啤,我揣著相機與錄音,去河邊找鬼茬故。 笑死盖灸,一個胖子當著我的面吹牛,可吹牛的內容都是我干的磺芭。 我是一名探鬼主播糠雨,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徘跪!你這毒婦竟也來了甘邀?” 一聲冷哼從身側響起琅攘,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎松邪,沒想到半個月后坞琴,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡逗抑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年剧辐,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邮府。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荧关,死狀恐怖,靈堂內的尸體忽然破棺而出褂傀,到底是詐尸還是另有隱情忍啤,我是刑警寧澤,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布仙辟,位于F島的核電站同波,受9級特大地震影響,放射性物質發(fā)生泄漏叠国。R本人自食惡果不足惜未檩,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粟焊。 院中可真熱鬧冤狡,春花似錦、人聲如沸项棠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沾乘。三九已至,卻和暖如春浑测,著一層夾襖步出監(jiān)牢的瞬間翅阵,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工迁央, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掷匠,地道東北人。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓岖圈,卻偏偏與公主長得像讹语,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蜂科,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內容

  • 專業(yè)名詞 塊存儲顽决、文件存儲短条、對象存儲 塊存儲 就好比硬盤一樣, 直接掛在到主機, 一般用于主機的直接存儲空間和數(shù)據(jù)...
    rochy_he閱讀 11,672評論 0 37
  • 不知是什么時候相識才菠,卻也走了一載的時光茸时,不知是何時暗生了情愫,明知是暗戀赋访,明知是不可能的事可都,卻也偷偷告了白,你當成...
    妹妹躲雨嗎閱讀 261評論 0 0
  • 本來只是看了某個明星的八卦签杈,但那個博主文采不錯的,就把他的一些微博翻了翻贤徒,然后又重點的看了看自己比較有好感芹壕,而且也...
    璐Moo閱讀 238評論 3 3
  • 前天下的一場雪踢涌,讓冬天出盡了風頭。行人穿著厚厚的棉衣序宦,走路開始小心翼翼睁壁。積雪變得又硬又滑,汽車也向蝸牛學習...
    云上小草閱讀 154評論 2 4