黃舜霞 陳 廣 楊新文
深圳市龍華區(qū)中心醫(yī)院 廣東深圳 518110
深圳市龍華區(qū)成立之初,尚未建立區(qū)級衛(wèi)生專網(wǎng)和開展區(qū)域信息化建設(shè),區(qū)域內(nèi)醫(yī)療機(jī)構(gòu)之間,醫(yī)院與社康中心之間信息壁壘普遍存在,業(yè)務(wù)協(xié)同缺乏信息化支撐。2017年,深圳市龍華區(qū)衛(wèi)生健康局啟動(dòng)區(qū)域智慧醫(yī)療總體規(guī)劃及建設(shè),按照一體化及集約化建設(shè)原則,統(tǒng)籌區(qū)域醫(yī)療核心業(yè)務(wù)系統(tǒng),其中就包括構(gòu)建了全區(qū)統(tǒng)一的醫(yī)學(xué)影像、檢驗(yàn)等醫(yī)技平臺,打通醫(yī)療機(jī)構(gòu)間的信息壁壘,實(shí)現(xiàn)醫(yī)療集團(tuán)內(nèi)部的集中診斷、跨機(jī)構(gòu)的檢查檢驗(yàn)等業(yè)務(wù)協(xié)同。
深圳市龍華區(qū)區(qū)域智慧醫(yī)療共接入了3家公立醫(yī)院、2家公衛(wèi)機(jī)構(gòu)、1家民營醫(yī)院,84家社康中心,日均影像檢查人次達(dá)6 500人次,日均影像存儲達(dá)250 G,高峰期將近450 G。全區(qū)醫(yī)學(xué)影像數(shù)據(jù)量龐大,且以小文件居多,隨著高端大型設(shè)備的不斷投入,影像數(shù)據(jù)質(zhì)量及數(shù)據(jù)容量越來越高,傳統(tǒng)上通過采用高性能的磁盤來存儲影像的做法已無法滿足設(shè)備產(chǎn)生的海量影像文件高效歸檔及長期保存的需求。
如何保障全區(qū)放射、超聲、內(nèi)鏡、病理等影像業(yè)務(wù)系統(tǒng)的穩(wěn)定性及全區(qū)海量影像文件存儲,亟須搭建一套穩(wěn)定、高可用的區(qū)域醫(yī)學(xué)影像生產(chǎn)系統(tǒng),滿足醫(yī)療機(jī)構(gòu)內(nèi)業(yè)務(wù)連續(xù)性及跨機(jī)構(gòu)間影像調(diào)閱需求。
深圳市龍華區(qū)醫(yī)學(xué)影像系統(tǒng)通過采用多種集群架構(gòu)技術(shù),存儲方面,利用Windows Server故障轉(zhuǎn)移集群技術(shù),搭建高可用服務(wù)器集群,集群中的節(jié)點(diǎn)采用集群共享卷技術(shù),實(shí)現(xiàn)任一集群節(jié)點(diǎn)對存儲資源的共享訪問;數(shù)據(jù)庫方面,應(yīng)用SQL Server AlwaysOn技術(shù)及MySQL主叢復(fù)制、組復(fù)制等數(shù)據(jù)庫備份容災(zāi)技術(shù),實(shí)現(xiàn)數(shù)據(jù)層面的容災(zāi);接入層方面,利用LVS+keepalived及Nginx負(fù)載均衡技術(shù),實(shí)現(xiàn)第四層加第七層的混合流量負(fù)載均衡;影像存儲方面,采用熱、溫、冷分級存儲,實(shí)現(xiàn)對在線、近線及歸檔影像文件的分層存儲。
2.1.1 存儲高可用技術(shù) ①Windows Server 故障轉(zhuǎn)移群集(WSFC):WSFC是微軟高可用技術(shù)的核心組成部分。WSFC可以把多臺計(jì)算機(jī)節(jié)點(diǎn)組合在一起并對外部應(yīng)用程序提供高可用服務(wù)。SQL Server作為服務(wù)器上的一個(gè)應(yīng)用,可運(yùn)行在集群的任一節(jié)點(diǎn)上,并通過集群提供一個(gè)虛擬訪問點(diǎn)給客戶端程序作為鏈接方式。當(dāng)故障轉(zhuǎn)移集群中的某臺服務(wù)器發(fā)生故障或不可用,WSFC中的另一臺服務(wù)器將接管故障節(jié)點(diǎn)提供的服務(wù)繼續(xù)對外提供服務(wù)。②集群共享卷(CSV):CSV 是一種通用的集群文件系統(tǒng),它將連接到集群節(jié)點(diǎn)的磁盤托管的卷映射到每個(gè)集群節(jié)點(diǎn)上的C:ClusterStorage目錄,使每個(gè)群集節(jié)點(diǎn)都能夠同時(shí)對共享卷進(jìn)行讀取和寫入。
2.1.2 數(shù)據(jù)庫集群技術(shù) ①SQL Server AlwaysOn:AlwaysOn 可用組是SQL 2012引入的新的高可用技術(shù)。它借助WSFC進(jìn)行資源組的管控。AlwaysOn可用性組最多可支持5個(gè)可用性副本,即一個(gè)主副本以及一至四個(gè)輔助副本[1-2],只有主副本上運(yùn)行的數(shù)據(jù)庫是處于可讀寫狀態(tài),稱為主數(shù)據(jù)庫。其余副本均作為輔助副本,輔助副本上的數(shù)據(jù)庫,也稱為輔助數(shù)據(jù)庫,只能接受只讀操作。正常情況下,主副本會不斷地將主數(shù)據(jù)庫上的數(shù)據(jù)變化發(fā)送給輔助副本,從而實(shí)現(xiàn)副本間的數(shù)據(jù)同步。一但發(fā)生故障轉(zhuǎn)移,輔助副本將成為新的主副本實(shí)例,來完成數(shù)據(jù)庫的讀寫操作。②MySQL數(shù)據(jù)庫容災(zāi)備份技術(shù):MySQL的數(shù)據(jù)庫容災(zāi)技術(shù)包括主叢復(fù)制和組復(fù)制兩種技術(shù)。MySQL主從復(fù)制是指數(shù)據(jù)可以從一個(gè)MySQL數(shù)據(jù)庫服務(wù)器主節(jié)點(diǎn)復(fù)制到一個(gè)或多個(gè)從節(jié)點(diǎn),從而保持主叢數(shù)據(jù)庫的數(shù)據(jù)一致性,一般采用異步主叢復(fù)制和半同步復(fù)制兩種模式,因搭建靈活,可方便地實(shí)現(xiàn)讀寫分離而被廣泛應(yīng)用。而MySQL 組復(fù)制(MGR)是MySQL分布式數(shù)據(jù)庫容災(zāi)備份的重要技術(shù)手段[3],由多臺MySQL服務(wù)器共同組成一個(gè)復(fù)制組,組成員通過消息傳遞服務(wù),實(shí)現(xiàn)數(shù)據(jù)狀態(tài)的同步,保證了組成員都擁有完整的數(shù)據(jù),避免了主叢模式引起的副本數(shù)據(jù)不可靠的問題。
2.1.3 接入層高可用 ①LVS+Keepalived:LVS(linux virtual server),即Linux虛擬服務(wù)器,是建立在傳輸層(OSI模型第四層)數(shù)據(jù)請求負(fù)載均衡技術(shù),支持NAT(network address translation)網(wǎng)絡(luò)地址轉(zhuǎn)換、TUN(tuning)隧道和DR(direct routing)直接路由三種工作模式。Keepalived則專門用于檢測LVS集群中各節(jié)點(diǎn)服務(wù)器的可用性,采用虛擬路由冗余協(xié)議(VRRP)實(shí)現(xiàn)Linux集群服務(wù)器的多機(jī)熱備功能,避免靜態(tài)路由出現(xiàn)的LVS集群單點(diǎn)故障問題。②Nginx負(fù)載均衡:Nginx提供高性能、輕量級的HTTP和反向代理服務(wù),通過輪詢、權(quán)重等調(diào)度算法,將負(fù)載(工作任務(wù))進(jìn)行平衡、分?jǐn)偟蕉鄠€(gè)計(jì)算節(jié)點(diǎn)上進(jìn)行運(yùn)行[4-6],實(shí)現(xiàn)基于應(yīng)用及內(nèi)容的七層交換負(fù)載均衡,具備高穩(wěn)定性、低系統(tǒng)資源消耗的特性。
2.1.4 影像分級存儲 醫(yī)院的醫(yī)療數(shù)據(jù)中,絕大部分為醫(yī)學(xué)影像數(shù)據(jù),醫(yī)學(xué)影像具有數(shù)據(jù)量大,讀寫效率要求高的特點(diǎn),目前,還沒有任何存儲介質(zhì)能同時(shí)滿足高效讀取、海量存儲且低成本的要求[7]。在這個(gè)現(xiàn)狀下,產(chǎn)生了醫(yī)學(xué)影像分級存儲的技術(shù)架構(gòu)實(shí)踐。較為成熟的應(yīng)用通常采用熱、溫、冷三級存儲,即采用具有讀寫性能高、吞吐量大等特性的集中式SAN存儲或NAS存儲存放一年內(nèi)的在線影像;使用低成本、海量存儲空間的分布式存儲,結(jié)合分布式存儲特有的存儲陣列內(nèi)及跨陣列多種分級策略能力,存放一年以上五年以下的在線存儲,同時(shí)在線存儲存放近線影像的索引文件,以便提供快速調(diào)取能力;五年以上歸檔影像則存放于磁帶或藍(lán)光設(shè)備[8-9]。
區(qū)域醫(yī)學(xué)影像生產(chǎn)系統(tǒng)整體架構(gòu)(見圖1)在超融合平臺上,由21臺虛擬服務(wù)器及5臺搭載GPU的物理服務(wù)器組成,其中數(shù)據(jù)庫服務(wù)器8臺,包括3臺SQL Server數(shù)據(jù)庫服務(wù)器集群,用于影像檢查業(yè)務(wù)數(shù)據(jù)存儲,3臺MySQL組復(fù)制數(shù)據(jù)庫服務(wù)器集群,用于存儲接口服務(wù)及云膠片、檢查預(yù)約等Web服務(wù)數(shù)據(jù),2臺MySQL主叢復(fù)制集群,用于存儲AI及高級影像的任務(wù)分發(fā)數(shù)據(jù);生產(chǎn)業(yè)務(wù)應(yīng)用服務(wù)器9臺,其中6臺提供放射、超聲、內(nèi)鏡、病理工作站生產(chǎn)業(yè)務(wù)應(yīng)用服務(wù),3臺用于供三維影像后處理服務(wù); 2臺文檔服務(wù)器集群及1臺文檔網(wǎng)關(guān),用于提供影像檢查報(bào)告PDF、HTML、CDA文檔的發(fā)布服務(wù),1臺外部接口服務(wù)器用于與區(qū)全民健康信息平臺、市影像平臺進(jìn)行數(shù)據(jù)及影像交互。
接入層由LVS+Keepalived HA集群提供的統(tǒng)一入口VIP,利用四層加七層的混合負(fù)載均衡技術(shù)實(shí)現(xiàn)高并發(fā)和高可用。影像存儲方面,分別采用集群共享卷、分布式對象存儲、藍(lán)光存儲來實(shí)現(xiàn)在線、近線及歸檔影像的分級存儲。
醫(yī)學(xué)影像區(qū)域平臺利用開源的LVS +Keepalived+Nginx技術(shù),搭建接入層混合負(fù)載均衡高可用集群架構(gòu)。部署2臺LVS服務(wù)器組成HA集群,并提供虛擬IP供客戶端訪問,同時(shí),在LVS服務(wù)器上部署Keepalived,負(fù)責(zé)檢測LVS服務(wù)器的狀態(tài),當(dāng)主服務(wù)器出現(xiàn)故障時(shí),自動(dòng)進(jìn)行LVS服務(wù)器主/備切換,備用服務(wù)器可迅速接管并對外提供服務(wù),避免LVS服務(wù)器單點(diǎn)故障導(dǎo)致請求失敗從而引起整個(gè)集群故障。而Ngnix集群則連接應(yīng)用服務(wù)器高可用集群,負(fù)責(zé)后端應(yīng)用服務(wù)器的流量路由和負(fù)載均衡。
2.4.1 WSFC+SQL Server AlwaysOn高可用架構(gòu) SQL Server數(shù)據(jù)庫集群采用Windows故障轉(zhuǎn)移集群(WSFC)+SQL Server AlwaysOn 方案,客戶端通過鏈接集群虛擬IP訪問集群主服務(wù)器(主副本),與此同時(shí),主副本將每個(gè)主數(shù)據(jù)庫的事務(wù)日志記錄發(fā)送到每個(gè)輔助數(shù)據(jù)庫,通過“數(shù)據(jù)同步”過程,主數(shù)據(jù)庫與每個(gè)連接的輔助數(shù)據(jù)庫獨(dú)立進(jìn)行數(shù)據(jù)同步[10]。當(dāng)主服務(wù)器因故障導(dǎo)致服務(wù)不可用或者不能處理客戶端請求時(shí),這時(shí)集群服務(wù)在自動(dòng)嘗試重啟當(dāng)前節(jié)點(diǎn)無效后,會將請求轉(zhuǎn)移到集群內(nèi)的輔助副本節(jié)點(diǎn),實(shí)現(xiàn)數(shù)據(jù)庫快速接管。同時(shí)數(shù)據(jù)庫提供集群管理功能,可以管理集群中的所有只讀實(shí)例,并且提供一個(gè)只讀虛擬地址,實(shí)現(xiàn)讀請求根據(jù)權(quán)重自動(dòng)轉(zhuǎn)發(fā)到所有只讀實(shí)例,以保證數(shù)據(jù)查詢等只讀應(yīng)用最優(yōu)性能,真正實(shí)現(xiàn)讀寫分離。
2.4.2 MySQL數(shù)據(jù)庫高可用架構(gòu) 考慮面向患者的Web服務(wù)可能存在集中高并發(fā)的情況,搭建3臺MySQL數(shù)據(jù)庫服務(wù)器集群,用于存儲接口服務(wù)及云膠片、檢查預(yù)約等Web服務(wù)數(shù)據(jù)及病理標(biāo)本追溯數(shù)據(jù)。采用基于原生復(fù)制及分布式paxos協(xié)議的組復(fù)制技術(shù),保證組內(nèi)的每臺服務(wù)器節(jié)點(diǎn)的數(shù)據(jù)始終一致。同時(shí),部署bootstrap模式的MySQL Router訪問代理及Keepalived高可用服務(wù)集群,利用組復(fù)制技術(shù)的高容錯(cuò)特性及基于端口的讀寫負(fù)載均衡,當(dāng)1臺或2臺節(jié)點(diǎn)故障,也能保證連接到故障節(jié)點(diǎn)的客戶端,可通過重定向或故障轉(zhuǎn)移連接到可用的集群節(jié)點(diǎn),從而減低對業(yè)務(wù)的影響程度。對于AI及高級影像的任務(wù)分發(fā)數(shù)據(jù),則采用2臺MySQL主叢復(fù)制集群,通過讀寫分離,來提高整體的服務(wù)性能,也解決了MySQL的單點(diǎn)故障問題[11-13]。
將9臺應(yīng)用服務(wù)器組成PACS應(yīng)用服務(wù)器集群, 提供放射、超聲、內(nèi)鏡、病理工作站數(shù)據(jù)接收、影像存儲、三維服務(wù)等業(yè)務(wù)應(yīng)用服務(wù)。其中6臺應(yīng)用服務(wù)器分別部署工作列表、數(shù)據(jù)接收、數(shù)據(jù)管理、文件存儲、任務(wù)管理等PACS業(yè)務(wù)相關(guān)服務(wù)。三維影像后處理由于需要耗用較多的系統(tǒng)資源,則通過部署3臺服務(wù)器組成集群獨(dú)立處理相關(guān)業(yè)務(wù)。不同的服務(wù)通過端口配置不同的訪問流量權(quán)重,當(dāng)醫(yī)院客戶端通過虛擬IP訪問應(yīng)用服務(wù)器集群時(shí),客戶端請求并不是直接指向后端的應(yīng)用服務(wù)器,而是由LVS服務(wù)器通過加權(quán)輪詢算法,將請求轉(zhuǎn)發(fā)至Nginx服務(wù)器,在保持連接的同時(shí),由Ngnix集群將相同的請求內(nèi)容,通過采用反向代理異步傳輸模式,根據(jù)預(yù)設(shè)的應(yīng)用服務(wù)權(quán)重情況,將客戶端請求均衡到每臺應(yīng)用服務(wù)器上。應(yīng)用服務(wù)器完成請求處理后,則采用DR技術(shù),將響應(yīng)數(shù)據(jù)直接返回到客戶端,從而縮短了數(shù)據(jù)的應(yīng)答路徑。當(dāng)某臺應(yīng)用服務(wù)器出現(xiàn)故障時(shí),可迅速將服務(wù)器從集群中剔除,從而保障系統(tǒng)高可用。
同時(shí),利用先進(jìn)的高性能影像集群架構(gòu),部署CPU+GPU并行的影像高級處理及人工智能計(jì)算框架,創(chuàng)新性引入GPU計(jì)算單元,突破了傳統(tǒng)的單一采用CPU的計(jì)算模式,讓CPU和GPU各司其職,極大提升對醫(yī)學(xué)影像大數(shù)據(jù)的處理,圖像的渲染速度,解決了過去主要依賴CPU單向處理圖像的瓶頸,實(shí)現(xiàn)醫(yī)學(xué)影像即時(shí)獲取、即時(shí)展現(xiàn)、即時(shí)計(jì)算、即時(shí)重建等相關(guān)的影像處理能力。
利用容器可彈性收縮的特性,將接口服務(wù)、面向互聯(lián)網(wǎng)的云膠片等服務(wù),采用Kubernetes(K8S)容器管理服務(wù),將服務(wù)打包成Docker鏡像,通過K8S動(dòng)態(tài)分發(fā)和部署,實(shí)現(xiàn)服務(wù)快速、動(dòng)態(tài)擴(kuò)容,彈性收縮,以應(yīng)對高并發(fā)的業(yè)務(wù)應(yīng)用。
深圳市龍華區(qū)現(xiàn)有醫(yī)學(xué)影像數(shù)據(jù)約220 T,日均影像文件250 G,極端高峰期可達(dá)450 G。海量的影像數(shù)據(jù)增長,對存儲I/O性能提出了更高的要求,采用傳統(tǒng)的集中式存儲架構(gòu)將面臨昂貴的存儲成本。
為兼顧影像數(shù)據(jù)高性能讀取和低成本保存需求,我區(qū)影像采用三級存儲結(jié)構(gòu),通過影像自動(dòng)分級存儲和藍(lán)光歸檔,解決了海量影像數(shù)據(jù)高效存儲及訪問的難題,實(shí)現(xiàn)影像數(shù)據(jù)的全流程自動(dòng)管理。其中,在線影像(一年內(nèi)的影像)采用架構(gòu)在超融合的全閃NAS存儲,滿足在線數(shù)據(jù)高性能、低時(shí)延的訪問需求,并利用Windows 服務(wù)器故障轉(zhuǎn)移群集(WFSC)技術(shù),保證每臺應(yīng)用服務(wù)器均可訪問共享存儲卷。近線影像(五年內(nèi)的影像)采用雙活分布式對象存儲保存,滿足近線影像高容量、低成本的存儲需求。結(jié)合分布式存儲特有的存儲陣列內(nèi)及跨陣列多種分級策略能力,在共享存儲卷存儲存放近線影像的索引文件,實(shí)現(xiàn)近線影像的快速調(diào)取。五年以上影像數(shù)據(jù)則采用藍(lán)光存儲歸檔,滿足影像數(shù)據(jù)長達(dá)50年長期留存的需求,并結(jié)合數(shù)據(jù)預(yù)熱機(jī)制,即當(dāng)患者預(yù)約簽到或登記時(shí),系統(tǒng)自動(dòng)將藍(lán)光上的歸檔影像,遷移至對象存儲設(shè)備,再從對象存儲遷移到集群共享卷,實(shí)現(xiàn)患者歷史影像的快速訪問。
醫(yī)療業(yè)務(wù)穩(wěn)定高效運(yùn)行是醫(yī)療信息化建設(shè)的重中之重,任何信息化服務(wù)中斷對于就醫(yī)服務(wù)來說無疑都是重大挑戰(zhàn),因此,為確保系統(tǒng)7×24 h無故障穩(wěn)定運(yùn)行,深圳市龍華區(qū)衛(wèi)健局采用高可用、高并發(fā)、高安全性集群架構(gòu)設(shè)計(jì),實(shí)現(xiàn)接入層、應(yīng)用層、數(shù)據(jù)層的高可用,并采用集群共享卷、影像分級技術(shù),從數(shù)據(jù)庫、應(yīng)用系統(tǒng)、影像存儲等方面探索區(qū)域醫(yī)學(xué)影像生產(chǎn)系統(tǒng)的高可用性最佳實(shí)踐之路。