隨著無人駕駛、機器人送餐等人工智能(AI)應用逐漸進入大眾生活,再加上資本熱潮的助推,AI的發展備受矚目。不過,要真正實現AI從概念到落地,還必須具備足夠的數據、足夠的計算能力和足夠的行業應用三個條件,而云計算恰好能滿足這些要求。
當下,AI正與云計算進行深度融合,未來會變得更加智能,但在智能化的背后是對海量數據存儲的剛性需求。據不完全統計,單是一輛無人駕駛汽車每秒產生的數據容量就在1G左右,相當于每秒發送20萬封純文本電子郵件或上傳100張高清數碼照片。因此,沒有大容量和超穩定的存儲系統,這一切都將無從談起。無存儲,不智能。為了更加清晰的了解云存儲技術的實現過程,UCloud存儲研發部將對云存儲——對象存儲(UFile)技術進行深度解析。
▌對象存儲UFile概念
對象存儲(UFile)是為互聯網應用提供非結構化文件存儲的服務;相對于傳統硬盤存儲,UFile具有存儲無上限、支持高并發訪問、成本更低等優勢;解決業務架構的文件存儲問題,有效降低海量文件的存儲成本,支持熱點數據的高并發訪問,提升終端用戶訪問體驗。
▌單地域UFile存儲架構六大集群
-
ULB(UCloud Load Balancer) 實現外網的對接及接入層的負載均衡與容災處理,該模塊通過定期向接入層模塊端口發送心跳以檢測接入層模塊的可用性,發現異常模塊及時進行剔除;
-
接入層提供文件訪問服務,該模塊為無狀態設計,因此可以平行擴容及縮容;
-
索引層保存文件對象的元數據信息,包括對象名稱、對象大小、創建時間、存儲位置等;
-
存儲層是實際存儲文件數據的模塊集群,主要實現文件數據的多份分布及高可靠存儲;
-
數據處理層主要實現UFile圖片及數據處理,包括圖片的實時裁剪、縮放、旋轉、水印、格式轉換、信息獲取等操作,客戶還可以使用自己的通用計算鏡像對數據進行處理;
-
名字服務主要實現索引層及數據處理層模塊的容災剔除,以上3個集群的模塊會定期在名字服務注冊自身服務,當其中有部分模塊因機器異常或者網絡中斷導致無法提供服務時,名字服務會將該機器從名字中剔除,并且通知接入層,從而實現后臺模塊的容災剔除。
▌重點設計解析
UFile索引層設計
UFile索引層為一套分布式KV存儲系統,其主要目標是保證UFile對象元數據的高性能、高可靠、高可用及可擴展的存儲,其主要分成兩層架構:
-
索引接入集群解決索引存儲集群的管理及元數據的分布,這一層模塊為無狀態設計,通過名字服務實現異常狀態的容災剔除;
-
索引存儲集群實現對象元數據的分布式存儲,每個對象元數據將存儲3份,保證數據的可靠性及高可用性,同時對象存儲采用SSD(固態硬盤)作為存儲介質,也保證了元數據存儲的高并發低延時訪問特性。另外,該模塊采用固定集群規模的方式進行管理,每個集群支撐的存儲量、訪問量固定,存儲可實現以集群為單位的水平擴容,保障業務不斷增長情況下的高性能穩定訪問支持。
UFile存儲層設計
存儲層包括三種類型模塊集群:
-
存儲節點,該模塊按照固定大小的集群(稱為“Set”)進行組織和管理,每個集群支撐的存儲量及訪問量規格固定,同時該模塊可根據存儲量需求橫向進行無限擴展,從而滿足客戶無存儲量上限的數據存儲需求。每個對象數據在存儲層存儲三份數據,通過對異常情況的及時處理和壞盤的及時修復,保證數據極高的可靠性(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如何實現高可靠及高可用特性。從云存儲技術出發,UCloud助力各領域企業更高效、更智能地探索數據價值。