慧揚健康分布式文件系統(tǒng)在醫(yī)療行業(yè)中的應(yīng)用
前言
廣州慧揚健康科技有限公司多年來一直致力于醫(yī)療信息系統(tǒng)的研發(fā),對產(chǎn)品中分布式文件系統(tǒng)解決方案方面已經(jīng)形成了自己特有的成熟架構(gòu),架構(gòu)中不僅包含慧揚研發(fā)的一套分布式文件系統(tǒng),還可通過適配器很容易連接HDFS、FastDFS、MinIO等主流分布式文件系統(tǒng)。借本篇文章向讀者做一個簡要介紹。
1醫(yī)療行業(yè)現(xiàn)狀
經(jīng)過幾十年的發(fā)展,從業(yè)務(wù)范圍、業(yè)務(wù)數(shù)據(jù)量、互聯(lián)網(wǎng)化等方面來看,醫(yī)療信息系統(tǒng)變的日益龐大和復(fù)雜,原來主流的C/S模式的醫(yī)療信息系統(tǒng)已不能適應(yīng)當(dāng)前多終端、多用戶、多層級的行業(yè)發(fā)展趨勢,隨著微服務(wù)架構(gòu)的興起以及國家倡導(dǎo)的信息系統(tǒng)國產(chǎn)化趨勢,以微服務(wù)為主體架構(gòu)的使用Java語言(平臺無關(guān)性)開發(fā)的采用B/S模式的新一代醫(yī)療信息系統(tǒng)正成為行業(yè)信息系統(tǒng)的主流,目前各行業(yè)龍頭公司都已經(jīng)推出了自己的新一代系統(tǒng)。
這類新系統(tǒng)具備鮮明的兩大技術(shù)特點:分布式微服務(wù)架構(gòu)(高可用性)、支持大數(shù)據(jù)分析處理(BI)。既能為醫(yī)療機構(gòu)提供多領(lǐng)域、全功能、一體化的分布式信息系統(tǒng),也能通過區(qū)域數(shù)據(jù)匯集、清洗、分析等過程為衛(wèi)健委等衛(wèi)生管理部門的指導(dǎo)和監(jiān)督職能提供決策支持。同時隨著系統(tǒng)中接入的智能醫(yī)療設(shè)備日益增多,新一代系統(tǒng)已開始從傳統(tǒng)的信息系統(tǒng)(數(shù)據(jù)表增刪改查)向?qū)崟r數(shù)據(jù)處理(kafka\redis\flink等)系統(tǒng)演進。其中以影像數(shù)據(jù)文件為主的非結(jié)構(gòu)化數(shù)據(jù)的存儲和訪問設(shè)計成為了高水平的新一代醫(yī)療信息系統(tǒng)的重要指標(biāo)之一。
高可用的、數(shù)據(jù)安全的、可動態(tài)擴展的分布式文件系統(tǒng)成為新一代醫(yī)療信息系統(tǒng)必不可少的重要組成部分,需要提供文件存儲、文件訪問、文件對比、圖像搜索等基礎(chǔ)功能。
2行業(yè)文件數(shù)據(jù)特性
業(yè)務(wù)過程中產(chǎn)生的文件主要集中在門診或住院的醫(yī)技檢驗、檢查、病理、手術(shù)等過程中,其產(chǎn)生時間、文件大小、訪問頻次都有其特有的行業(yè)特征:
(1)產(chǎn)生時間比較集中(門診高峰期);
(2)文件類型以圖像文件為主,大小在幾M到數(shù)百M之間,視頻文件很少;
(3)文件一旦生成基本不會被修改;
(4)文件生成后大多數(shù)復(fù)診時會被訪問數(shù)次(診斷或影像打印時),之后很少訪問。
針對上述特點,我們需要一個這樣的分布式文件系統(tǒng):
(1)能自動隨著業(yè)務(wù)量的增減自動調(diào)節(jié)集群處理能力(提高訪問吞吐量);
(2)生成后能在高性能的分布式緩存中滯留一段時間,或者在患者復(fù)診前自動加載到緩存中備讀,避免訪問時從磁盤讀取,提升訪問速度;
(3)終端到服務(wù)器集群間的網(wǎng)絡(luò)帶寬要充足(硬件要求,本文不關(guān)注);
(4)對多讀少寫的應(yīng)用場景有優(yōu)化方案。
3慧揚健康分布式文件系統(tǒng)
3.1主流分布式文件系統(tǒng)簡介
lHadoop/HDFS:功能完善,海量存儲,訪問時延較大,文件越多命名節(jié)點上文件尋址檢索效率會變低,存儲一定量的大文件更有優(yōu)勢。
lFastDFS: 以Group為擴容單位構(gòu)建的分布式文件存儲系統(tǒng),采用組間靜態(tài)負載均衡;無斷點續(xù)傳功能;實際應(yīng)用場景下類似于本地存儲+多機備份。更適用于文件數(shù)量大,文件尺寸小的應(yīng)用場景,例如:網(wǎng)站、商城等。
lMinIO: 支持S3對象存儲協(xié)議的面向低成本云端應(yīng)用開發(fā)的一個輕量級分布式文件系統(tǒng)。部署與使用簡單友好,更大優(yōu)勢在于使用MinIO的應(yīng)用可無縫遷移到云平臺上。
上述三種分布式文件系統(tǒng)都有其應(yīng)用場景,簡單地選擇其中任何一種都不能很好地同時滿足醫(yī)療行業(yè)對訪問速度和存儲容量的需求。我公司研發(fā)的分布式文件系統(tǒng)就是為解決這一普遍存在的問題而設(shè)計的。
3.2慧揚分布式文件系統(tǒng)架構(gòu)
如上圖,慧揚分布式文件系統(tǒng)是介于業(yè)務(wù)系統(tǒng)與傳統(tǒng)分布式文件系統(tǒng)間的一個中間服務(wù)層,是技術(shù)中臺的核心組件之一。慧揚文件系統(tǒng)通過文件存儲策略接口和文件存取接口統(tǒng)一向業(yè)務(wù)中臺中的微服務(wù)提供文件服務(wù)。這兩個接口都采用了慧揚特有的動態(tài)接口適配器技術(shù),微服務(wù)僅需依賴這兩個標(biāo)準接口,從而將業(yè)務(wù)系統(tǒng)與文件系統(tǒng)的耦合性降到了最低。同時,慧揚分布式文件系統(tǒng)通過“文件系統(tǒng)動態(tài)接口代理層”實現(xiàn)了與物理的文件系統(tǒng)的解耦。
標(biāo)準文件存儲過程如下:
(1)從文件存儲策略器中獲得目標(biāo)對象目標(biāo)屬性的文件的絕對存儲路徑。
(2)調(diào)用文件存取接口中的文件存儲方法,并通過參數(shù)指定文件的存儲位置。
(3)文件存取器先將文件存儲到臨時文件區(qū)。當(dāng)對象存儲成功(事務(wù)結(jié)束后)后調(diào)用文件存取器提供的文件持久化方法,該方法先通過FSDIP層將文件保存到外接的物理持久層中,然后再將文件預(yù)熱到內(nèi)存分布式文件系統(tǒng)中。
(4)至此文件存儲完畢,內(nèi)存分布式文件中的預(yù)熱文件,將由文件存儲策略器中的文件預(yù)熱器負責(zé)釋放。
標(biāo)準文件讀取過程如下:
(1)通過文件存儲策略器,根據(jù)某對象某屬性存儲的文件名稱獲取該文件的絕對存儲路徑,或者根據(jù)給定的文件URI地址獲取該文件的絕對存儲路徑。
(2)調(diào)用文件存取接口中的文件讀取方法,傳入文件的絕對存儲路徑。
(3)文件存取器首先到內(nèi)存分布式文件系統(tǒng)中讀取該文件。如果不存在則通過FSDIP從物理存儲層中讀取文件并緩存到內(nèi)存分布式文件系統(tǒng)中。
(4)文件存取器從內(nèi)存分布式文件系統(tǒng)中讀取文件數(shù)據(jù)并返回給調(diào)用方。
慧揚分布式文件系統(tǒng)架構(gòu)主要以下幾部分組件構(gòu)成:
3.2.1文件存儲策略接口
基于對象存儲思想,慧揚文件系統(tǒng)為對象的文件類型的屬性提供存取定位服務(wù)。文件存儲策略接口是一個標(biāo)準接口,采用慧揚接口動態(tài)適配技術(shù)將其多個實現(xiàn)類聚合起來,統(tǒng)一向外提供服務(wù)。該接口包含兩個方法:
(1)文件訪問地址獲取方法(文件定位器實現(xiàn)):
傳入對象域類型、對象類名稱、對象文件類屬性名稱、文件類型、對象ID五個參數(shù),返回一個全局訪問URL地址??赏ㄟ^瀏覽器直接訪問該地址查看或下載文件內(nèi)容。
(2)文件存儲地址獲取方法(文件定位器實現(xiàn)):
傳入對象域類型、對象類名稱、對象文件類屬性名稱、文件類型、對象ID、默認文件名稱六個參數(shù),返回一個文件存儲的全路徑絕對地址。該地址被后續(xù)介紹的文件存取接口使用來保存文件數(shù)據(jù)。
文件存儲策略接口由文件存儲策略器實現(xiàn)。
3.2.2文件存儲策略器
文件存儲策略器主要由:文件定位器、文件持久化器和文件預(yù)熱器組成。文件定位器和文件持久化器是必須實現(xiàn)的,文件預(yù)熱器是可選的。其中,文件定位器提供了前述的文件訪問地址獲取方法和文件存儲地址獲取方法。它決定了某類文件的存儲地址和訪問地址。
文件定位器是無狀態(tài)的,同類文件存儲策略器的多個實例之間文件定位器可共存;文件持久化器和文件預(yù)熱器在同類文件存儲策略器的多個實例之間,分別僅允許存在一個激活狀態(tài)的,其他的處于睡眠狀態(tài)。
默認實現(xiàn)的文件存儲策略器按“/{對象域類型}/{文件類型}/{類名}/{實體對象ID}/{屬性名}/{文件名稱(無后綴)}”向外提供文件訪問URL地址和文件存儲位置服務(wù)。文件名稱按調(diào)用方可預(yù)先推斷的、公開的、明確的規(guī)則產(chǎn)生(默認采用存儲時輸入的文件名稱)。
文件持久化器主要是對內(nèi)存分布式文件系統(tǒng)中的某對象域或域內(nèi)某類的所有文件類屬性對應(yīng)的存儲路徑中的文件進行監(jiān)測:
l對外提供方法:當(dāng)對象保存成功后將臨時文件移動到持久化目錄下。
l定時清除臨時文件區(qū)內(nèi)(/{對象域類型}/{文件類型}/{類名}/{實體對象ID}目錄即為臨時文件區(qū))超時的臨時文件。清除前會檢查對應(yīng)路徑的持久化目錄下是否已經(jīng)有了該臨時文件對應(yīng)的持久化文件,如果沒有則檢查實體對象對應(yīng)屬性值,如果屬性值與臨時文件名稱匹配,則將該臨時文件移動到對應(yīng)的持久化目錄下并按持久化文件名稱規(guī)則修改文件名。
文件預(yù)熱器主要功能是將文件策略器管理的對象域中的相關(guān)實體對象關(guān)聯(lián)的文件提前預(yù)熱加載到內(nèi)存分布式文件系統(tǒng)中。是否需要文件預(yù)熱視對象域中相關(guān)業(yè)務(wù)需求而定的。文件預(yù)熱器同時也負責(zé)將已“冷卻”的文件數(shù)據(jù)從內(nèi)存分布式文件系統(tǒng)中清除。
3.2.3文件存取接口
文件存取接口是一個標(biāo)準接口,采用慧揚接口動態(tài)適配技術(shù)將其多個實現(xiàn)類聚合起來,統(tǒng)一向外提供服務(wù)。
文件存取接口除定義了獲取指定文件長度方法外,還定義了一組文件讀寫方法,其中包含有為斷點續(xù)傳功能提供的,支持讀取范圍參數(shù)的方法。
3.2.4 文件存取器
文件存取器實現(xiàn)了文件存取接口,對業(yè)務(wù)系統(tǒng)提供文件存取服務(wù)。
當(dāng)外部應(yīng)用讀取文件時,文件存取器首先會到內(nèi)存分布式文件系統(tǒng)中對應(yīng)路徑中查找指定文件,如果不存在則會調(diào)用文件系統(tǒng)動態(tài)接口代理層(FSDIP)提供接口將目標(biāo)文件讀出并寫入到內(nèi)存分布式文件系統(tǒng)內(nèi)的對應(yīng)路徑中(這種文件在訪問時加載到內(nèi)存中的方式,我們稱為“文件冷加載”)。
3.2.5 內(nèi)存分布式文件系統(tǒng)
我們采用了Apache Ignite 的IGFS文件系統(tǒng)作為我們的內(nèi)存分布式文件系統(tǒng),感興趣的讀者可自行查閱相關(guān)資料。
3.2.6 文件系統(tǒng)動態(tài)接口代理層
文件系統(tǒng)動態(tài)接口代理層(FSDIP)是一系列文件存取接口實現(xiàn)類的結(jié)合,通過采用慧揚接口動態(tài)適配技術(shù)聚合了這些文件存取接口實現(xiàn)類,對調(diào)用層以文件存取接口為標(biāo)準提供統(tǒng)一的訪問傳統(tǒng)分布式文件系統(tǒng)的功能。FSDIP是慧揚文件存取接口與傳統(tǒng)分布式文件系統(tǒng)Client接口的一個轉(zhuǎn)換層。通過這個轉(zhuǎn)換層可充分解耦和集成第三方的分布式文件系統(tǒng),提高了慧揚文件系統(tǒng)的可擴展性和兼容性。
FSDIP根據(jù)調(diào)用參數(shù)和系統(tǒng)中存在的分布式文件系統(tǒng)Client代理對象,來動態(tài)適配文件數(shù)據(jù)的存儲和訪問通道。每個Client代理對象根據(jù)預(yù)定義的存儲規(guī)則對外提供文件存取服務(wù),例如: HDFS Client代理對象支持存取50M以上或CT影像類型的文件;而50M以下或CT影像類型的縮略文件則由FastDFSClient代理對象支持;而用戶身份證照片數(shù)據(jù)可通過代理存儲數(shù)據(jù)庫或FastDFS中。
此外,根據(jù)項目或業(yè)務(wù)需求,可動態(tài)新增、啟?;蚯袚Q各類Client代理對象,可對Client代理對象進行規(guī)則和優(yōu)先級設(shè)置。FSDIP層完美地解耦了分布式文件系統(tǒng)不同實現(xiàn)對業(yè)務(wù)平臺的影響。
慧揚分布式文件系統(tǒng)非常適合多讀少寫的業(yè)務(wù)場景,大量的文件可預(yù)熱到IGFS中,IGFS是一套高性能的內(nèi)存分布式文件系統(tǒng),可通過Apache Ignite提供的連接器連接到Spark、Flink等并行處理組件,作為這些組件的加速器為業(yè)務(wù)層提供文件并行處理能力。
3.3 應(yīng)用場景舉例
3.3.1 T+n天就診人員影像文件預(yù)熱機制
根據(jù)掛號信息將n天內(nèi)要復(fù)診的病人的相關(guān)檢查影像文件數(shù)據(jù)提前預(yù)熱到內(nèi)存分布式文件系統(tǒng)中。這樣在看診時病人相關(guān)檢查影像文件加載速度就比“冷加載”(訪問時才加載到內(nèi)存)方式快很多;結(jié)合前端加載文件時采用多線程分段加載措施,則影像文件數(shù)據(jù)加載將會更快。
3.3.2 患者電子病歷文檔預(yù)熱機制
患者電子病歷文檔是一個內(nèi)容復(fù)雜的XML格式文件。醫(yī)生或患者在終端上查詢或打印電子病歷文檔時速度很慢,甚至不敢開放給患者訪問。使用慧揚分布式文件系統(tǒng)后,醫(yī)生或患者可在使用前提前預(yù)熱好需要的電子病歷文檔,為實際應(yīng)用時提速。而其他文件系統(tǒng)無法為用戶提供這樣的功能。
3.3.3 為病歷全文檢索提供高速二級緩存
要實現(xiàn)病歷全文檢索需要將病歷文檔“裝入”ES等全文檢索組件中,病歷的裝載速度成為了重要的性能指標(biāo)之一。此時可將一個耗時的裝載過程分為兩個并行的較短的階段來完成:第一階段,從物理存儲層中將病歷文檔數(shù)據(jù)裝載到內(nèi)存分布式文件系統(tǒng)中;第二階段,再從內(nèi)存分布式文件系統(tǒng)中將病歷文檔數(shù)據(jù)轉(zhuǎn)載到ES中。這樣增加了單位時間的病歷文檔的數(shù)據(jù)加載吞吐量,同時縮短了ES服務(wù)器數(shù)據(jù)裝置的占用的時間,提供了數(shù)據(jù)裝置效率。
4結(jié)束語
存儲和訪問具備醫(yī)療行業(yè)特性文件數(shù)據(jù),各公司不同項目的商業(yè)目標(biāo)不同而有所取舍,沒有最好只有最合適。慧揚公司循著推動和引領(lǐng)醫(yī)療行業(yè)信息技術(shù)革新的初心,將繼續(xù)為廣大客戶提供更好的產(chǎn)品!