隨著無人駕駛、機器人送餐等人工智能(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存儲路由算法設計