關於雲存儲,你需要知道的一些事(一)
引言
Alphago打破圍棋神話、無人駕駛、機器人送餐,人工智慧已備受全球矚目,現在資本的熱潮也正轉向AI市場,智能化大潮已勢不可擋。當下人工智慧和雲業務緊密關聯,未來將變得更加智能,但在這個智能化的背後,是對海量數據存儲的剛性需求,據悉,單是一輛無人駕駛汽車每秒產生的數據容量就在1G左右,相當於每秒發送20萬封純文本電子郵件,或上傳100張高清數碼照片。沒有大容量、超穩定的存儲系統,這一切都是無稽之談。
無存儲,不智能,那麼雲存儲技術是如何實現的?今天將由UCloud存儲研發部經理李希源給我們帶來雲存儲-—對象存儲(UFile)技術深度解析。
對象存儲 UFile
對象存儲(UFile)是為互聯網應用提供非結構化文件存儲的服務;相對於傳統硬碟存儲,UFile具有存儲無上限、支持高並發訪問、成本更低等優勢;解決業務架構的文件存儲問題,有效降低海量文件的存儲成本,支持熱點數據的高並發訪問,提升終端用戶訪問體驗。
單地域UFile存儲架構集群介紹
單地域UFile架構大體可劃分為6大集群:
- ULB實現外網的對接及接入層的負載均衡及容災處理,主要實現外網IP地址的綁定及接入層集群的秒級異常剔除,該模塊通過定期向接入層模塊埠發送心跳檢測接入層模塊的可用性,在發現異常時及時進行異常模塊的剔除
- 接入層提供文件訪問服務,該模塊為無狀態設計,因此可以平行擴容及縮容
- 索引層保存文件對象的元數據信息,包括對象名稱、對象大小、創建時間、存儲位置等信息
- 存儲層是實際存儲文件數據的模塊集群,主要實現文件數據的多份分布及高可靠存儲
- 數據處理層主要實現UFile圖片及數據的處理,包括圖片的實時裁剪、縮放、旋轉、水印、格式轉換、信息獲取操作,以及使用客戶自己的通用計算鏡像對數據進行處理
- 名字服務主要實現索引層、存儲層及數據處理層模塊的容災剔除,以上3個集群的模塊會定期在名字服務註冊自身的服務,當其中有部分模塊因機器異常或者網路中斷導致無法提供服務時,名字服務會將該機器從名字中剔除,並且通知接入層,從而實現後台模塊的容災剔除。
主要從以下三點解析:
- UFile索引層設計
- UFile存儲層設計
- UFile存儲路由演算法設計
UFile索引層設計
UFile索引層為一套分散式KV存儲系統,其主要目標是保證UFile對象元數據的高性能、高可靠、高可用及可擴展的存儲,其主要分成2層架構:
- 索引接入集群,主要解決索引存儲集群的管理及元數據的分布,這一層模塊為無狀態設計,通過名字服務實現異常狀態的容災剔除
- 索引存儲集群,實現對象元數據的分散式存儲,每個對象元數據將存儲3份,保證數據的可靠性及高可用性,同時對象存儲採用SSD作為存儲介質,保證了元數據存儲的高並發低延時訪問特性。該模塊採用固定集群規模的方式進行管理,每個集群支撐的存儲量、訪問量固定,存儲可實現以集群為單位的水平擴容,保障業務不斷增長情況下的高性能穩定訪問支持
UFile存儲層設計
存儲層包括3中類型模塊集群:
- 存儲節點,該模塊按照固定大小的集群(稱為Set)進行組織和管理,每個集群支撐的存儲量及訪問量規格固定,該模塊可根據存儲量需求橫向進行無限擴展,從而實現客戶無存儲量上限的數據存儲。每個對象數據在存儲層存儲3份數據,通過對異常情況的及時處理及壞盤的及時修復,保證數據極高的可靠性(99.99999999%)
- SetMaster,該模塊進行Set狀態的管理,接入集群通過SetMaster決定上傳的對象數據的存儲集群,並執行數據的存儲操作
- OsdMaster,該模塊每個Set有一套,實現Set內部的存儲路由管理,並對各塊磁碟的狀態進行監控,及時剔除異常磁碟
UFile存儲路由演算法設計
UFile存儲集群採用無中心設計,數據存儲採用固定的路由演算法進行存儲,因為存儲集群的規模是固定的,因此路由表也是固定,這就保證了存儲系統的簡單性及穩定性。下面詳細介紹UFile數據存儲層的路由演算法設計。
在存儲集群上線時,每個集群的OsdMaster將該集群的磁碟信息進行組織,生成一個存儲路由表,該路由表的每個項目對應3塊分布在不同機架及存儲機器上的磁碟,對象數據將按照該路由表指定的位置進行存儲。
每個存儲在UFile上的對象數據將被切分成若干個4MB的數據塊,稱為分片。UFile為每個對象分配一個單集群內部唯一的對象ID,通過對象ID和分片編號拼接獲得分片ID,通過字元串哈希演算法獲得哈希值,並在路由表中找到該分片存儲的3塊磁碟位置,由UFile接入模塊將該分片數據提交到3塊磁碟上。
當單塊磁碟出現異常時,OsdMaster會發現該情況並將該磁碟標記為異常狀態,接入層寫入該數據時,將只寫入兩份數據,磁碟修復後,將從這兩份數據中拷貝一份數據到已修復磁碟,恢複數據的多份高可靠存儲。當出現一個哈希表項中有2塊磁碟不可使用的情況下,為保證數據安全性,該存儲集群將不允許寫入操作,寫入操作將被切換到其他集群提供服務,從而保證UFile讀寫的高可用性。
UFile功能優勢:
- 海量存儲
存儲空間無上限,無需考慮存儲空間擴容問題,單文件最大支持5TB。適用於音視頻、圖片分享等UGC類應用海量文件存儲。
- 高並發
支持高並發訪問,突破傳統磁碟I/O限制,滿足高訪問量及高下載量業務需求。適用於高下載量高訪問量應用文件的存儲。
- 訪問加速
存儲文件結合CDN分發加速,國內外500+加速節點,有效降低訪問延遲、提升下載速度。提升全網終端用戶的訪問體驗。
- 安全可用
所存文件保存三份副本,分布存儲於不同存儲集群。即使單份數據損壞也不影響存儲文件的可用性,同時保證文件安全。
- 內容保護
可通過身份驗證機制及防盜鏈設置控制終端用戶訪問許可權,避免因內容被盜用產生的版權損失及惡意訪問的流量消耗。
- 圖片處理
提供圖片處理服務,支持圖片縮放、剪裁、添加水印等功能,並提供多種尺寸設置,滿足移動端、PC端等多終端訪問需求。
- 更低成本
存儲單價僅為雲硬碟的1/2,下載由CDN分發,降低存儲及網路成本。按實際使用量計費,無存儲及帶寬資源閑置浪費。
- 開發支持
完備的API介面及SDK開發包支持,適合多種語言,與原有業務無縫結合,能夠極大縮短開發周期,幫助業務快速上線。
總結:
在大量企業對數據存儲的強需求背景下,UCloud對象存儲系統應運而生,本文通過介紹UFile產品、底層文件存儲系統實現細節、功能優勢,分析UFile如何實現高可靠及高可用特性,為企業數據服務保駕護航,從雲存儲技術出發,助力各個領域的企業更高效、更智能探索數據價值。
——————
其他閱讀推薦:
關於分散式資料庫,你需要知道的一些事(下)
關於分散式資料庫,你需要知道的一些事(中)關於分散式資料庫,你需要知道的一些事(上)五大常見的MySQL高可用方案
我如何使用 Django + Vue.js 快速構建項目一起學 Node.js | 使用 Express + MongoDB 搭建多人博客本文由『UCloud雲存儲研發團隊』提供。
———徵稿的分割線———
如果你也有一些技術實踐經驗想分享給大家,歡迎投稿給我們:)
UCloud機構號將提供 300雲服務代金券贊助+500元/篇的轉載費+全技術渠道推廣資源!
你的文章將被更多技術同學閱讀、點贊、感謝、分享!
徵稿範圍
題材不限,與「技術」及「雲」相關即可,但文章不得少於500字,圖文並茂為佳。可以是:
- 不同雲廠商產品使用體驗及數據評測;
- 項目部署到雲平台前後數據分析對比;
- 雲上遷移/部署過程遇到的問題及解決方案;
- 其他雲上部署經驗;
……
作品提交鏈接:http://cn.mikecrm.com/fj6KmCu
作品提交鏈接:http://cn.mikecrm.com/fj6KmCu
「UCloud機構號」將獨家分享雲計算領域的技術洞見、行業資訊以及一切你想知道的相關訊息。
歡迎提問&求關注 o(*////▽////*)q~
以上。
推薦閱讀:
※地質調查走上雲端 國家地質雲平台正式上線背後的技術力量
※為什麼說華為的雲計算業務必將成功?
※阿里雲伺服器怎麼玩才能更有意思?
※萬國數據納斯達克敲鐘上市 融資1.925億美元