摘要:【目的】融媒體的飛速發(fā)展,極大地推動了多媒體內(nèi)容的創(chuàng)作和分享,同時隨著4K、5G和AI技術(shù)的成熟發(fā)展,新華社用戶上傳和入庫的稿件中照片、音樂、視頻等文件與日俱增,加劇了數(shù)據(jù)量的爆發(fā),不斷占用著存儲資源?!痉椒ā酷槍@類非結(jié)構(gòu)化數(shù)據(jù)的存儲和管理,傳統(tǒng)的塊存儲(SAN)和文件存儲(NAS)由于其本身技術(shù)和架構(gòu)的限制略顯捉襟見肘,對象存儲應(yīng)運(yùn)而生?;诖?,文章主要介紹了數(shù)據(jù)存儲的發(fā)展過程,以及分布式對象存儲的特點及優(yōu)勢,結(jié)合新華社采編融媒體平臺業(yè)務(wù)探索應(yīng)用可行性?!窘Y(jié)果】【結(jié)論】通過搭建MinIO對象存儲環(huán)境,并改造采編融媒平臺文件服務(wù)接口,可實現(xiàn)對象存儲的平滑切換,驗證對象存儲在采編融媒平臺應(yīng)用的可行性。
關(guān)鍵詞:分布式;對象存儲;融媒體;MinIO;采編 " " " " " " "中圖分類號:TP311 " " " " " " " "文獻(xiàn)標(biāo)識碼:A
文章編號:1671-0134(2023)06-104-05 " " " " DOI:10.19483/j.cnki.11-4653/n.2023.06.022
本文著錄格式:高文,任柏青,魏海濤,周晨賡.分布式對象存儲在采編融媒體平臺的探索和應(yīng)用[J].中國傳媒科技,2023(06):104-107,158.
導(dǎo)語
近年來,進(jìn)入數(shù)字經(jīng)濟(jì)時代,隨著海量應(yīng)用的興起,數(shù)據(jù)呈現(xiàn)爆炸式增長,數(shù)據(jù)類型也更加多樣復(fù)雜。據(jù)國際數(shù)據(jù)公司(IDC)預(yù)測,全球數(shù)據(jù)量預(yù)計2025年將達(dá)到175ZB。此外,數(shù)據(jù)的類型也在發(fā)生變化,隨著技術(shù)的各種深入應(yīng)用,視頻、音頻、影像等各種非結(jié)構(gòu)化數(shù)據(jù)的增長更為迅速。
在媒體深度融合的背景下,傳統(tǒng)媒體遇到諸多挑戰(zhàn),傳統(tǒng)媒體也在新技術(shù)的驅(qū)動下迎來了升級。作為輿論引導(dǎo)主力軍、主陣地、主渠道,新華社在媒體融合發(fā)展取得重大進(jìn)步和顯著成效,推出一系列融媒體報道產(chǎn)品。根據(jù)新華社每日電訊報道,2021年全國兩會期間新華社國內(nèi)部“主力軍全面挺進(jìn)主戰(zhàn)場”,全鏈條策劃、全媒化采集,同時創(chuàng)新思維發(fā)揮長項,拼創(chuàng)意、搶陣地,國內(nèi)部融媒產(chǎn)品產(chǎn)量“逆轉(zhuǎn)”傳統(tǒng)通稿,“破圈突圍”,新媒體和通稿發(fā)稿比例由2020年的1 : 1變成了超過2 : 1。[1-2]
在傳統(tǒng)媒體到新媒體的轉(zhuǎn)型過程中,文件大、數(shù)量多的非結(jié)構(gòu)化媒體數(shù)據(jù)存儲是一個嚴(yán)峻考驗。對媒體來說,數(shù)據(jù)和內(nèi)容始終是核心,在新聞素材的采集、編輯、加工、管理、分發(fā),到最終三審一校的成稿等諸多環(huán)節(jié)中,需要考慮到如何在多用戶、多系統(tǒng)間共享,如何支持多業(yè)務(wù)流程,最終滿足融媒體產(chǎn)品制作、流轉(zhuǎn)、審核、備份歸檔、數(shù)據(jù)分析、AI等多方面的需求。
面對著數(shù)據(jù)爆炸式增長和非結(jié)構(gòu)化數(shù)據(jù)占比顯著增加這兩大趨勢,傳統(tǒng)的存儲系統(tǒng),諸如DAS、SAN和NAS等集中式存儲,在容量和性能等方面因為本身技術(shù)和架構(gòu)的限制,無法進(jìn)行有效應(yīng)對。人們需要一種全新架構(gòu)的存儲系統(tǒng),這種存儲系統(tǒng)需具備極高的可擴(kuò)展性,能夠滿足人們對存儲容量TB到EB規(guī)模的擴(kuò)展的需求。于是,對象存儲應(yīng)運(yùn)而生。
1.數(shù)據(jù)存儲發(fā)展
隨著信息技術(shù)和互聯(lián)網(wǎng)的發(fā)展,存儲系統(tǒng)也在不斷進(jìn)化,系統(tǒng)功能越來越豐富,存儲容量不斷提升,性能也越來越強(qiáng)。通俗地講,按照存儲功能和使用方式的不同,可以分為以下3種類型。
1.1 " 塊存儲
塊存儲,通過控制器將多塊磁盤重新組成一個或者多個邏輯磁盤,作為塊存儲設(shè)備提供給主機(jī)使用,在主機(jī)上顯示的就是一塊或多塊硬盤,通常需要主機(jī)操作系統(tǒng)對硬盤進(jìn)行分區(qū)和格式化文件系統(tǒng)后才能使用。主機(jī)通過數(shù)據(jù)線直連的塊存儲,稱為DAS存儲(Direct-Attached Storage,直連式存儲),通過光纖通道網(wǎng)絡(luò)或者IP網(wǎng)絡(luò)訪問的塊存儲,稱為SAN存儲(Storage Area Network,存儲區(qū)域網(wǎng)絡(luò))。塊存儲的擴(kuò)展性和靈活性較差。
1.2 " 文件存儲
文件存儲,是指在塊存儲的基礎(chǔ)上增加了文件系統(tǒng),通過網(wǎng)絡(luò)遠(yuǎn)程的方式將文件系統(tǒng)掛載到主機(jī)使用,在主機(jī)上顯示的就是一個文件系統(tǒng)分區(qū),可以直接使用。應(yīng)用程序無需關(guān)心不同文件存儲的差別,和訪問本地文件系統(tǒng)一樣,通過調(diào)用操作系統(tǒng)POSIX標(biāo)準(zhǔn)文件系統(tǒng)接口來操作文件存儲中的目錄和文件。眾所周知,文件系統(tǒng)中有目錄和文件,采用層級樹形結(jié)構(gòu)進(jìn)行文件管理,便于文件查找。用戶可以通過操作系統(tǒng)中的應(yīng)用程序?qū)ξ募M(jìn)行打開、修改等操作,如打開Word、編輯Word。文件存儲具有豐富多樣的功能,很適合用來存儲文檔、圖片、視頻等各種非結(jié)構(gòu)化文件。
1.3 " 對象存儲
對象存儲,最初是公有云廠商提供的云存儲產(chǎn)品,通過Web接口提供Key-Value形式的分布式對象存儲服務(wù)??梢园讶魏螖?shù)據(jù)轉(zhuǎn)換成字節(jié)流賦值給Value,并提供一個字符串類型的Key,一起提交給對象存儲保存。在讀取時,只需要提供Key,就可以讀取對應(yīng)的Value。它更像一個Web應(yīng)用,而不像傳統(tǒng)存儲。人們經(jīng)常將其用來存儲圖片、視頻等文件,用于解決海量的互聯(lián)網(wǎng)文件存儲和用戶訪問。通常,使用時會模仿本地文件系統(tǒng)的使用習(xí)慣,將文件路徑(含目錄路徑)字符串作為Key,將文件數(shù)據(jù)轉(zhuǎn)換為字節(jié)流之后作為Value,一起提交給對象存儲保存,間接實現(xiàn)存儲文件的目的。更特別的是,可以按照對象存儲的規(guī)則,將Key放到一個特定URL網(wǎng)址里,在瀏覽器里輸入后就可以直接訪問,這對圖片或者視頻而言,是非常便利的。因此,對象存儲最主流的使用場景,就是存儲網(wǎng)站、移動App等互聯(lián)網(wǎng)/移動互聯(lián)網(wǎng)應(yīng)用的靜態(tài)內(nèi)容(視頻、圖片、文件、軟件安裝包等)。
相較于傳統(tǒng)存儲,對象存儲具備很多新的特性,筆者認(rèn)為以下幾種較為突破:
(1)版本控制功能。對象的每一次更改,都會生成一個新版本,用戶可以獲取任意一個歷史版本,同時提供對象鎖、WORM(一次寫入多次讀?。┑裙δ堋?/p>
(2)更細(xì)粒度的安全控制和審計。在身份鑒權(quán)的基礎(chǔ)上,具備對象級別的訪問控制能力,每一個對象都可以單獨設(shè)置用戶權(quán)限和讀寫權(quán)限。另外,由于訪問接口為REST API,更容易獲取和分析用戶訪問日志。[3]
(3)豐富的存儲桶策略。存儲桶是存放對象的容器,可以針對存儲桶設(shè)置一系列策略,作用于所有對象,包括啟用版本控制、啟用保留時間機(jī)制、遠(yuǎn)程復(fù)制等。
2.對象存儲系統(tǒng)方案
2.1 " 采編業(yè)務(wù)文件存儲特點
采編業(yè)務(wù)中的文件存儲主要類型是圖片、音頻、視頻、文檔等多媒體文件,文件數(shù)量為2500萬個左右,文件大小從幾KB到幾GB不等,實時寫入和讀取。
2.2 " 軟件定義存儲MinIO
鑒于采編業(yè)務(wù)文件存儲特點,采編融媒體平臺開始探索使用對象存儲對圖片、音頻、視頻、文檔等多媒體文件進(jìn)行存儲和存取訪問。采編融媒體平臺對象存儲系統(tǒng)采用軟件定義存儲的方式,基于開源分布式對象存儲軟件MinIO,通過在普通PC服務(wù)器上運(yùn)行對象存儲程序,將多臺PC服務(wù)器上的硬盤組成一個存儲資源池,對外提供對象存儲服務(wù),來實現(xiàn)對象存儲功能,從而替代昂貴的傳統(tǒng)集中存儲設(shè)備。[4]
MinIO是在GNU AGPLv3協(xié)議下開源的對象存儲軟件,提供Amazon S3兼容接口,支持所有的S3特性,支持本地部署和容器部署,支持存儲的單個文件大小最大為50TB,支持的集群存儲容量理論上沒有上限。MinIO部署步驟簡單,易上手,核心程序就是一個go編譯的二進(jìn)制文件,不依賴特定軟件和庫,通過環(huán)境變量來配置節(jié)點。支持多地復(fù)制,也就是不同的集群之間,支持?jǐn)?shù)據(jù)自動復(fù)制,來實現(xiàn)異地容災(zāi)備份的目的。按照MinIO官網(wǎng)自己的說法,MinIO是世界上最快的對象存儲,在32個NVMe驅(qū)動器節(jié)點和100Gbe網(wǎng)絡(luò)上發(fā)布的GET/PUT結(jié)果超過325GB/秒和165GB/秒。[5]
MinIO自帶Web管理界面和命令行工具mc??梢栽赪eb管理界面上對MinIO進(jìn)行對象管理、存儲桶管理、用戶管理、數(shù)據(jù)修復(fù)、診斷和日志管理。如圖1所示。
2.3 " 系統(tǒng)架構(gòu)和部署
MinIO提供單節(jié)點單硬盤(Single-Node Single-Drive,以下簡稱SNSD)、單節(jié)點多硬盤(Single-Node Multi-Drive,以下簡稱SNMD)、多節(jié)點多硬盤(Multi-Node Multi-Drive,以下簡稱MNMD)3種部署方式。SNSD模式是單機(jī)模式,文件會原封不動存儲在MinIO后端磁盤上,MioIO只能用于S3 API網(wǎng)關(guān),無法使用對象存儲的諸多特性。SNMD和MNMD模式為分布式集群模式,采用糾刪碼方案來實現(xiàn)冗余和高可用,提供對象級別修復(fù),比RAID或者副本方案開銷更少。本文采用MNMD模式。
MNMD模式的MinIO集群層級元素為集群(Cluster)、服務(wù)器池(Server Pool)、糾刪集(EC Set)、驅(qū)動器(Drive),層級結(jié)構(gòu)如圖2所示。MinIO集群由一個或多個服務(wù)器池組成,各服務(wù)器池獨立運(yùn)行,互不影響,可以通過增加服務(wù)器池來進(jìn)行水平擴(kuò)容。每個服務(wù)器池由多臺服務(wù)器和磁盤驅(qū)動器組成。一個服務(wù)器池內(nèi),MinIO會基于服務(wù)器數(shù)量和磁盤驅(qū)動器數(shù)量,將所有磁盤驅(qū)動器自動分組為不同的糾刪集,也就是條帶化。一個糾刪集中磁盤驅(qū)動器數(shù)量(條帶大?。┓秶鸀?到16,一旦初始化之后便固定不變,并且一個服務(wù)器池中的所有糾刪集都有相同的條帶大小。MioIO接收到對象上傳請求后,根據(jù)算法選定將對象保存到哪個糾刪集,假設(shè)該糾刪集條帶大小為M(包含M個磁盤驅(qū)動器),然后實時將對象編碼為M-N個數(shù)據(jù)塊和N個校驗塊后分別寫入該糾刪集的各個磁盤驅(qū)動器中,每一個磁盤驅(qū)動器保存一個數(shù)據(jù)塊或者校驗塊。一般使用EC:N來表示校驗塊數(shù)量,可以容忍N(yùn)個數(shù)據(jù)塊損壞或丟失,當(dāng)數(shù)據(jù)塊丟失或者損壞的情況下,可以通過校驗塊來重組數(shù)據(jù)塊。特殊的,最大化校驗塊配置情況下,也就是N等于M的一半時,該糾刪集可以容忍一半的磁盤驅(qū)動器損壞。每個對象只會保存在一個服務(wù)器池,不會跨服務(wù)器池存儲。MinIO集群提供各服務(wù)器池所有對象的統(tǒng)一視圖,單個服務(wù)器池故障,不會影響整個集群,但單個服務(wù)器池離線會影響集群對外服務(wù)。
除網(wǎng)絡(luò)外,MinIO部署設(shè)計主要考慮服務(wù)器和磁盤數(shù)量。由于MinIO的分布式集群模式采用糾刪碼方案存儲對象數(shù)據(jù),因此MinIO集群單個服務(wù)器池節(jié)點數(shù)量和磁盤數(shù)量需要符合糾刪碼的算法特點,各服務(wù)器池節(jié)點數(shù)量和磁盤數(shù)量可以不同。按照MinIO官網(wǎng)推薦的部署拓?fù)?,一個服務(wù)器池內(nèi),應(yīng)具有偶數(shù)個節(jié)點和磁盤驅(qū)動器,兩者數(shù)量最大公約數(shù)應(yīng)為16,超過8個磁盤驅(qū)動器時校驗塊默認(rèn)為4。本文采用10GbE網(wǎng)絡(luò),8個節(jié)點共128個2TB SAS磁盤驅(qū)動器,EC:4校驗方案,裸容量為512TB,可用容量為384TB。
3.測試與應(yīng)用
3.1 " 功能性能測試
使用COSBench測試工具分別對100KB、5MB、100MB大小的文件進(jìn)行測試,功能正常,性能測試如下:
根據(jù)以上測試結(jié)果,分布式對象存儲讀性能較好,除100KB小文件外,能夠跑滿1Gb帶寬,寫性能為讀性能的1/5到1/4。
3.2 " 采編融媒體平臺應(yīng)用
采編業(yè)務(wù)環(huán)境下會產(chǎn)生大量的圖片、音頻、視頻、文檔等多媒體文件,多媒體文件的存儲、訪問及管理是采編業(yè)務(wù)核心系統(tǒng)的支撐功能。采編業(yè)務(wù)核心系統(tǒng)中的文件服務(wù)是對所有文件資源的管理和存儲的關(guān)鍵服務(wù),主要用于統(tǒng)一管理、存儲各子系統(tǒng)產(chǎn)出的文件,便于在各子系統(tǒng)之間流轉(zhuǎn),同時解決由于各子系統(tǒng)獨立存儲導(dǎo)致的數(shù)據(jù)冗余問題。文件服務(wù)采用Spring Cloud架構(gòu),分為4個獨立子服務(wù),分別為靜態(tài)文件代理服務(wù)、文件管理服務(wù)、圖片處理服務(wù)、視頻轉(zhuǎn)碼服務(wù),每個子服務(wù)都涉及對文件及其元數(shù)據(jù)的讀寫。
為此,在采編業(yè)務(wù)核心系統(tǒng)的文件服務(wù)基礎(chǔ)上,對以上服務(wù)中涉及文件讀寫的相關(guān)接口進(jìn)行了改造,由最初通過NAS的存儲路徑方式改造成對象存儲的http接口方式進(jìn)行訪問,新開發(fā)了MinIO文件上傳和文件注冊接口,實現(xiàn)了通過S3協(xié)議的對象存儲域名完成文件注冊功能。[6]并模擬獲取文件元數(shù)據(jù)的流程,包括但不限于圖片文件的EXIF信息、音視頻文件的碼率時長等信息。
(1)整合MinIO添加相關(guān)依賴
lt;!-- https://mvnrepository.com/artifact/io.minio/minio --gt; " " " " lt;dependencygt;
lt;groupIdgt;io.miniolt;/groupIdgt;
lt;artifactIdgt;miniolt;/artifactIdgt;
lt;versiongt;8.2.1lt;/versiongt;
lt;/dependencygt;
(2)整合MinIO增加MinIO配置
minio:
endpoint:172.21.244.37
port:9000
accessKey:test
secretKey:DoLTfkduigwklsdfoq836TzcH+Rp4aH5fN1oKuoO6CYT
secure:1
bucketName:test-gw
其中,endpoint是minio api的ip,port是minio api的端口號,accessKey和secretKey是minio的賬號密碼,bucketName表示桶名,可以理解為一個文件夾名稱。
(3)定義MiniO
@Component
@ConfigurationProperties(prefix = “minio”)
public class MinioConfig {
/*** endpoint是一個url、域名、IPv4或者IPv6的地址 */
private String endpoint;
private Integer port;/*** 端口號*/
private String accessKey; //用戶ID,用于唯一標(biāo)識你的賬戶
private String secretKey;//私鑰
private Boolean secure;//true則是https,1為http,默認(rèn)值true
private String bucketName;//默認(rèn)存儲桶
@Bean
public MinioClient minioClient(){
MinioClient minioClient = MinioClien.builder()
.endpoint(endpoint,port,secure)
.credentials(accessKey,secretKey).build();
return minioClient;
}
文件上傳
public void upload(String objectName,InputStream inputStream){
try {
long size = inputStream.available();
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket(minioConfig.getBucketName())
.object(objectName).stream(inputStream,size,-1)
.build();
minioClient.putObject(putObjectArgs);
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
} "catch (Exception e) {
e.printStackTrace();
}
}
4.優(yōu)化實踐
根據(jù)采編業(yè)務(wù)核心系統(tǒng)文件服務(wù)架構(gòu)和對象存儲的特性和應(yīng)用,本文驗證了對象存儲應(yīng)用于采編業(yè)務(wù)的可能性,以及反推采編架構(gòu)層面的優(yōu)化改進(jìn)。
在存儲層面,使用對象存儲替代現(xiàn)有的文件存儲(NAS)試驗是可行的,但對使用對象存儲的其他應(yīng)用或者服務(wù)將會提出新的要求。例如,系統(tǒng)文件服務(wù)將由掛載NAS存儲改為使用URL請求訪問對象存儲資源,每次I/O操作將轉(zhuǎn)變?yōu)橐淮握埱?,尤其是需要全文件獲取的操作,如計算MD5等。[7]系統(tǒng)文件服務(wù)需要著力考慮I/O操作對邏輯流程上帶來的影響,需要根據(jù)具體情況優(yōu)化現(xiàn)有流程,以盡可能減少由于對象存儲的使用帶來的I/O壓力。
同時,也可以考慮在存儲層做一個輕量級的文件元數(shù)據(jù)管理服務(wù),將文件資源的固有屬性信息,如md5、后綴、類型、圖片EXIF信息、音視頻碼率、文件引用次數(shù)等,做對應(yīng)管理。這將極大地減少文件服務(wù)和其他服務(wù)或系統(tǒng)的I/O請求。這也對相關(guān)系統(tǒng)間數(shù)據(jù)的存儲定義和規(guī)范提出了更高要求。
結(jié)語
總而言之,隨著當(dāng)前移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)、人工智能等技術(shù)的快速發(fā)展,圖片、音視頻等非結(jié)構(gòu)化數(shù)據(jù)出現(xiàn)爆炸式增長,對技術(shù)系統(tǒng)造成很大壓力,同時也帶來了更大的拓展空間。因此,要更好地運(yùn)用大數(shù)據(jù)、智能化等技術(shù),借鑒互聯(lián)網(wǎng)在運(yùn)用分布式對象存儲的實踐經(jīng)驗,充分整合媒體資源,打通互聯(lián)互通,提升采編效率,進(jìn)一步推動媒體深度融合發(fā)展。
[1]江南. 融合媒體時代分布式對象存儲系統(tǒng)的應(yīng)用探索[J]. "中國有線電視,2020(1):37-40.
[2]王若辰.國社“最傳統(tǒng)部門”融媒報道這樣“破圈突圍” [N] .新華每日電訊,2021-03-12(4).
[3]中存儲網(wǎng).三種存儲類型比較-文件、塊、對象存儲[EB/OL] . https://www.chinastor.com/jishu/SAN/042623L42016.html.2016-07-26/2023-04-16.
[4]中存儲網(wǎng).什么是對象存儲?OSD架構(gòu)及原理[EB/OL]. https://www.chinastor.com/jishu/OSD.html,2013-03-21/2023-04-16.
[5]minIO.MinIO Object Storage for Linux [EB/OL].https://min.io/docs/minio/linux/index.html?ref=docs-redirect,2017-02-17/2023-04-16.
[6]minIO.MinIO Java SDK for Amazon S3 Compatible Cloud Storage [EB/OL].https://min.io/docs/minio/linux/developers/java/minio-java.html,2022-03-26/2023-04-16.
[7]張延盛.一種分布式對象存儲在巡檢系統(tǒng)中的研究應(yīng)用 [J].電信工程技術(shù)與標(biāo)準(zhǔn)化,2022(5):7-10,26.
作者簡介:高文(1985-),女,山東,新華社通信技術(shù)局高級工程師,研究方向為計算機(jī)應(yīng)用技術(shù);任柏青(1983-),男,北京,新華社通信技術(shù)局高級工程師,研究方向為采編融媒系統(tǒng)的建設(shè)與開發(fā);魏海濤(1984-),男,河北,新華社通信技術(shù)局高級工程師,研究方向為基礎(chǔ)軟件研究;周晨賡(1977-),男,重慶,新華社通信技術(shù)局高級工程師,研究方向為在線視頻編輯系統(tǒng)的建設(shè)與開發(fā)。
(責(zé)任編輯:張曉婧)