彭 鋒,宋文欣,孫浩峰,劉 丹
(武漢智領(lǐng)云科技有限公司,湖北武漢 430000)
云計算與大數(shù)據(jù)技術(shù)的發(fā)展進(jìn)一步加快了智慧醫(yī)療與智慧健康建設(shè)的腳步。但現(xiàn)有智慧醫(yī)療建設(shè)仍面臨醫(yī)療信息系統(tǒng)種類紛亂、資源利用不合理、運(yùn)維成本高及安全性無法保障等問題,尤其是新冠疫情突發(fā)后,諸如系統(tǒng)資源無法快速擴(kuò)展、性能和穩(wěn)定性難以保證等難題亟待解決。因此,合理利用大數(shù)據(jù)技術(shù)在醫(yī)療行業(yè)及重大疫情防控中的應(yīng)用成為智慧醫(yī)療發(fā)展重點(diǎn)。
當(dāng)前醫(yī)院信息化建設(shè)面臨著數(shù)據(jù)標(biāo)準(zhǔn)化、系統(tǒng)規(guī)劃是否完善等諸多難題,如何有效利用云計算及大數(shù)據(jù)技術(shù)成為新的發(fā)展方向。開展醫(yī)院信息化建設(shè)需注重對云計算和大數(shù)據(jù)技術(shù)的有效應(yīng)用,實(shí)現(xiàn)醫(yī)院信息化管理發(fā)展目標(biāo),以提升醫(yī)院發(fā)展質(zhì)量,更好地滿足患者需求。眾多研究者針對醫(yī)院信息化建設(shè)路徑提出了多種建設(shè)思路[1-4]。王覓也等[5]在介紹醫(yī)療大數(shù)據(jù)集成應(yīng)用現(xiàn)狀的基礎(chǔ)上,提出“云平臺+數(shù)據(jù)資源+應(yīng)用”的大數(shù)據(jù)集成平臺構(gòu)建方案,介紹了平臺系統(tǒng)設(shè)計與應(yīng)用效果,推動了醫(yī)療大數(shù)據(jù)應(yīng)用發(fā)展;錢敏[6]提出受醫(yī)療政策、診療模式及疫情等多種因素的影響,醫(yī)療模式處于動態(tài)之中,必須通過不斷擴(kuò)展更新才能適應(yīng)不斷變化的內(nèi)在醫(yī)療需求。因此,在醫(yī)院規(guī)劃設(shè)計中需妥善處理近期需求與長遠(yuǎn)發(fā)展的相互關(guān)系,大數(shù)據(jù)應(yīng)用云平臺及彈性擴(kuò)容設(shè)計可為醫(yī)院不定期擴(kuò)展更新提供動態(tài)的發(fā)展思路。
上述研究利用大數(shù)據(jù)解決了部分醫(yī)療信息化改革中的難題,但未針對在智慧醫(yī)療的具體場景下(比如新冠疫情下海量數(shù)據(jù)的處理)如何利用云計算及大數(shù)據(jù)技術(shù)展開深入研究。本文以武漢健康云項(xiàng)目為例,明確武漢健康云服務(wù)系統(tǒng)開發(fā)任務(wù)與系統(tǒng)建設(shè)目標(biāo),針對項(xiàng)目難點(diǎn)分析智領(lǐng)云大數(shù)據(jù)應(yīng)用云平臺解決方案,介紹該平臺系統(tǒng)結(jié)構(gòu)與功能模塊,詳述系統(tǒng)內(nèi)部設(shè)計,并以疫情防控為應(yīng)用背景,介紹該云平臺快速彈性擴(kuò)容等創(chuàng)新之處。
醫(yī)療信息化的快速發(fā)展使新冠疫情爆發(fā)后,社會整體應(yīng)對手段和能力得到顯著提升。疫情預(yù)警、應(yīng)急響應(yīng)、傳染源隔離、病患治療、遠(yuǎn)程醫(yī)療、互聯(lián)網(wǎng)醫(yī)院、物資調(diào)度等疫情防控所需的信息處理技術(shù)及應(yīng)用在全國各地得到普及。疫情期間,人工智能、大數(shù)據(jù)等技術(shù)在從最新疫情數(shù)據(jù)發(fā)布、虛假新聞信息辟謠、人群活動監(jiān)控和管理、疫情和生活物資流動,到高危人員的調(diào)查、追蹤,病毒感染者的發(fā)現(xiàn)、診斷和治療,以及普通人群特殊時期日常生活工作等疫情防控各環(huán)節(jié)發(fā)揮著卓有成效的作用,中國正在用“新武器”打贏這場“新冠”戰(zhàn)斗。
武漢市衛(wèi)健委響應(yīng)國家智慧醫(yī)療建設(shè),積極籌備了武漢健康云項(xiàng)目,該項(xiàng)目以病人就診的“一卡通”、電子病歷“一本通”、同級醫(yī)院檢查檢驗(yàn)結(jié)果的“一單通”為基礎(chǔ),是利用云計算、大數(shù)據(jù)、物聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)等先進(jìn)技術(shù)及理念打造的城市公共健康與醫(yī)療綜合性服務(wù)平臺?!拔錆h健康云”作為武漢市惠民服務(wù)工程,需為全市近千萬市民提供互聯(lián)網(wǎng)+健康醫(yī)療服務(wù),采用傳統(tǒng)架構(gòu)模式無法滿足要求,因此該項(xiàng)目采用基于先進(jìn)云計算和大數(shù)據(jù)技術(shù)的智領(lǐng)云大數(shù)據(jù)應(yīng)用云平臺解決方案,規(guī)范、高效地實(shí)現(xiàn)全民健康信息化項(xiàng)目要求的各項(xiàng)應(yīng)用功能,同時為深層次大數(shù)據(jù)應(yīng)用提供靈活、安全、可靠的基礎(chǔ)支撐架構(gòu)。
“武漢健康云”有3 層架構(gòu)。第一層是各級各類醫(yī)療衛(wèi)生機(jī)構(gòu)的信息化基礎(chǔ)層,第二層是統(tǒng)一的武漢健康大數(shù)據(jù)云平臺,第三層是在平臺之上提供的服務(wù),包括互聯(lián)網(wǎng)+健康服務(wù)、分級診療服務(wù)大數(shù)據(jù)應(yīng)用服務(wù),以及特色健康服務(wù)等。本文重點(diǎn)闡述大數(shù)據(jù)應(yīng)用云平臺建設(shè)項(xiàng)目組織和實(shí)施過程,該應(yīng)用云平臺為“武漢健康云”武漢健康大數(shù)據(jù)云平臺(第二層)提供了堅實(shí)的PaaS 層平臺,可為平臺之上運(yùn)行的應(yīng)用(第三層)提供高效穩(wěn)定的發(fā)布、監(jiān)控、運(yùn)維及升級服務(wù)支撐。
2.1.1 項(xiàng)目需求
武漢健康云大數(shù)據(jù)應(yīng)用云平臺項(xiàng)目主要需求有4 點(diǎn):①在同一個平臺上支持運(yùn)行13 家醫(yī)療應(yīng)用廠商與數(shù)十種不同后臺服務(wù)及大數(shù)據(jù)應(yīng)用軟件;②能部署在兩個不同的IaaS 平臺(楚天云、電信天翼云);③支持運(yùn)行兩個不同的網(wǎng)絡(luò)(醫(yī)療專網(wǎng)、互聯(lián)網(wǎng)外網(wǎng));④以盡可能少的虛擬機(jī)資源運(yùn)行更多的后臺服務(wù),并具有快速擴(kuò)展能力。
2.1.2 項(xiàng)目難點(diǎn)
項(xiàng)目需求帶來的難點(diǎn)主要表現(xiàn)在4 個方面。
(1)醫(yī)療應(yīng)用廠商的應(yīng)用系統(tǒng)有數(shù)十種,基于不同的操作系統(tǒng)及開發(fā)語言,使用不同類型的數(shù)據(jù)庫。如果使用傳統(tǒng)方式,在同一個平臺上分布這些應(yīng)用服務(wù),則需為不同類型的操作系統(tǒng)、不同版本的軟件系統(tǒng)分配不同的虛擬機(jī),使整個資源規(guī)劃異常復(fù)雜。因?yàn)楦鲬?yīng)用廠家獨(dú)立申請資源,無法實(shí)現(xiàn)資源共享,導(dǎo)致系統(tǒng)資源利用率低,資源浪費(fèi)嚴(yán)重。同時,因?yàn)楦鲬?yīng)用廠家獨(dú)立安裝所需系統(tǒng)中間件,其版本、架構(gòu)不統(tǒng)一,使運(yùn)維難度增大、成本增加。該部署方式后期也難以進(jìn)行擴(kuò)展。當(dāng)系統(tǒng)訪問量急劇增長的時候,如果系統(tǒng)不能快速擴(kuò)展,則難以保證系統(tǒng)的穩(wěn)定運(yùn)行。
(2)從數(shù)據(jù)層面來看,使用傳統(tǒng)方式建設(shè)云平臺將造成數(shù)據(jù)集成困難。因?yàn)獒t(yī)療應(yīng)用廠商將數(shù)據(jù)保存在各自的數(shù)據(jù)庫系統(tǒng),造成原始數(shù)據(jù)和日志數(shù)據(jù)的管理無法統(tǒng)一,形成大量數(shù)據(jù)孤島,應(yīng)用數(shù)據(jù)的集成需花費(fèi)大量精力且無法平滑擴(kuò)展。
(3)從應(yīng)用層面來看,開發(fā)新的大數(shù)據(jù)應(yīng)用將難以實(shí)現(xiàn)。因?yàn)榘凑諅鹘y(tǒng)模式,數(shù)據(jù)采集、數(shù)據(jù)清理、脫敏、機(jī)器學(xué)習(xí)/人工智能應(yīng)用需單獨(dú)的系統(tǒng)實(shí)現(xiàn),對接不同應(yīng)用廠商使用的各種數(shù)據(jù)庫系統(tǒng),難以實(shí)現(xiàn)整體安全策略,無法在保證數(shù)據(jù)安全的條件下快速實(shí)施數(shù)據(jù)應(yīng)用。
(4)從部署方式上看,所有應(yīng)用需部署在內(nèi)外網(wǎng)的兩套IaaS 系統(tǒng)上,其部署流程應(yīng)方便快速并且保持一致性,而傳統(tǒng)部署模式難以保證部署的高效性。
針對以上難點(diǎn),采用以Mesos 為底層資源管理,以Docker 容器運(yùn)行微服務(wù)應(yīng)用的云原生架構(gòu)。
(1)使用Docker 將所有應(yīng)用服務(wù)轉(zhuǎn)化成微服務(wù)架構(gòu),微服務(wù)架構(gòu)將不同操作系統(tǒng)、不同語言開發(fā)的應(yīng)用都封裝到容器里,這樣不同的應(yīng)用系統(tǒng)可運(yùn)行在同一個虛擬機(jī)上,極大降低了部署復(fù)雜性并提升了資源利用率。
(2)使用Mesos 管理底層資源(CPU、內(nèi)存和存儲空間),可將所有虛擬機(jī)資源當(dāng)作一個資源池進(jìn)行管理,自動將容器部署在任何滿足容器資源要求的虛擬機(jī)之上而無需人工干預(yù)。這種資源管理方式進(jìn)一步降低了系統(tǒng)部署的復(fù)雜性,并且能實(shí)現(xiàn)統(tǒng)一的應(yīng)用監(jiān)控、報警、運(yùn)維和升級,可在系統(tǒng)訪問量急劇增長時快速實(shí)現(xiàn)系統(tǒng)擴(kuò)展。
(3)在微服務(wù)架構(gòu)下,不同應(yīng)用廠商的應(yīng)用實(shí)現(xiàn)了與數(shù)據(jù)庫系統(tǒng)的分離,使這些應(yīng)用可共享數(shù)據(jù)庫資源。而共享的數(shù)據(jù)庫資源也部署在統(tǒng)一的云原生架構(gòu)上,極大簡化了數(shù)據(jù)采集復(fù)雜度,可避免數(shù)據(jù)孤島的出現(xiàn),為未來數(shù)據(jù)中臺建設(shè)創(chuàng)造條件。
(4)Mesos+容器的云原生架構(gòu)可提供方便的負(fù)載均衡管理,能夠輕松滿足在內(nèi)外網(wǎng)環(huán)境下的應(yīng)用服務(wù)訪問需求,保證應(yīng)用服務(wù)被安全地訪問。
武漢健康云大數(shù)據(jù)應(yīng)用云平臺項(xiàng)目整體規(guī)劃解決方案采用先進(jìn)的資源管理系統(tǒng)Mesos 與基于Docker 的微服務(wù)架構(gòu),實(shí)現(xiàn)了醫(yī)療應(yīng)用的PaaS(Platform-as-a-Service)平臺。該解決方案架構(gòu)有3 層,如圖1 所示。
(1)底層是整個集群的虛擬機(jī)資源,每個虛擬機(jī)都安裝同一版本的操作系統(tǒng)且配置相同(網(wǎng)絡(luò)、文件卷及用戶)。這種配置在新增資源擴(kuò)展集群時,可以快速地將一個新的虛擬機(jī)加入集群而不需要額外配置。
(2)在虛擬機(jī)之上是Mesos 資源管理系統(tǒng),將虛擬機(jī)集群管理成一個統(tǒng)一的資源池,所有CPU、內(nèi)存和硬盤資源都進(jìn)行統(tǒng)一的自動化管理。Mesos 支持Marathon 容器調(diào)度框架,可以輕松實(shí)現(xiàn)容器部署、運(yùn)維和升級。
(3)在Mesos 資源管理系統(tǒng)之上運(yùn)行的是智領(lǐng)云BDOS(Data-driven IT Architectured PaaS Platform)大數(shù)據(jù)操作系統(tǒng)。該系統(tǒng)提供統(tǒng)一的圖形化界面管理應(yīng)用整個生命周期,完成應(yīng)用安裝(容器創(chuàng)建)、發(fā)布、和升級。同時,BDOS實(shí)現(xiàn)了一個統(tǒng)一的微服務(wù)應(yīng)用監(jiān)控、報警和運(yùn)維平臺,使各個不同的應(yīng)用開發(fā)廠商可以獨(dú)立發(fā)布、監(jiān)控和運(yùn)維各自開發(fā)的程序應(yīng)用。同時,平臺運(yùn)營商可在同一個平臺上運(yùn)維和管理數(shù)據(jù)庫系統(tǒng)。
Fig.1 The architecture of BDOS platform圖1 大數(shù)據(jù)應(yīng)用云平臺整體架構(gòu)
武漢健康云大數(shù)據(jù)應(yīng)用云平臺包含下列軟件系統(tǒng):
(1)開源的Mesos 及Marathon 系統(tǒng)。首先針對Mesos 系統(tǒng)開發(fā)了一套集群自動檢測和部署系統(tǒng),其中檢測系統(tǒng)能對集群中所有虛擬機(jī)進(jìn)行初始(用戶、網(wǎng)絡(luò)、磁盤及安全性)配置,以滿足Mesos 安裝需求;其次部署系統(tǒng)以并發(fā)的方式進(jìn)行集群部署,極大加速了集群部署速度。
(2)智領(lǐng)云自主研發(fā)的BDOS 大數(shù)據(jù)操作系統(tǒng)。該系統(tǒng)包括7 個子系統(tǒng):①集群管理。應(yīng)用云平臺提供服務(wù)器集群的基礎(chǔ)管理功能,包括集群基礎(chǔ)信息查詢、當(dāng)前應(yīng)用總覽、集群節(jié)點(diǎn)管理功能,包括添加、刪除節(jié)點(diǎn)和修改節(jié)點(diǎn)配置等;②系統(tǒng)服務(wù)。為平臺提供核心的系統(tǒng)服務(wù),包括二進(jìn)制文件管理、負(fù)載均衡管理;③應(yīng)用管理。為平臺提供應(yīng)用的發(fā)布與配置管理,包括應(yīng)用部署的資源配置、實(shí)例數(shù)配置、健康檢查配置、服務(wù)發(fā)現(xiàn)配置、負(fù)載均衡配置、日志配置等,還有應(yīng)用版本控制管理、應(yīng)用運(yùn)行狀態(tài)監(jiān)控與管理,包括應(yīng)用狀態(tài)查詢、應(yīng)用啟??刂频龋虎苋罩静僮鞴芾?。為應(yīng)用云平臺提供系統(tǒng)及應(yīng)用的日志收集、日志存儲、日志收索及分析功能,記錄系統(tǒng)中所有操作,包括操作人員、參數(shù)和運(yùn)行結(jié)果,并提供記錄的查詢功能;⑤監(jiān)控報警管理。為應(yīng)用云平臺提供系統(tǒng)與應(yīng)用的各種資源及狀態(tài)指標(biāo)的監(jiān)控功能,包括硬件資源指標(biāo)、系統(tǒng)運(yùn)行狀態(tài)指標(biāo)、數(shù)據(jù)庫資源指標(biāo)、應(yīng)用狀態(tài)指標(biāo)等,并根據(jù)預(yù)設(shè)的報警規(guī)則提供報警功能;⑥用戶管理。為應(yīng)用云平臺提供用戶管理功能,包括個人用戶管理、安全組管理,并提供多用戶支持、資源隔離、功能隔離、數(shù)據(jù)隔離和應(yīng)用隔離等;⑦運(yùn)維管理。為系統(tǒng)運(yùn)維開發(fā)提供實(shí)用工具,包括基于Web 頁面操作的Ping 工具、Telnet 工具及Terminal 等。
如圖2 所示,BDOS 大數(shù)據(jù)應(yīng)用云平臺運(yùn)行在管理虛擬機(jī)資源的Mesos 系統(tǒng)以及容器調(diào)度框架Marathon 之上。應(yīng)用云平臺本身也是微服務(wù)架構(gòu),運(yùn)行多個容器應(yīng)用。其中,核心應(yīng)用包含BDOS Core 應(yīng)用與BDOS Web 應(yīng)用,這兩個應(yīng)用元數(shù)據(jù)均保存在MySQL(以容器方式運(yùn)行)中。BDOS Core 應(yīng)用通過接口提供各種服務(wù),包括集群管理、系統(tǒng)服務(wù)、應(yīng)用管理、運(yùn)維工具等。BDOSWeb 應(yīng)用為系統(tǒng)管理人員提供了圖形化操作界面。應(yīng)用云平臺運(yùn)行的其他容器應(yīng)用包括提供監(jiān)控報警管理的Prometheus 和Grafana應(yīng)用、提供日志管理的Logviewer 應(yīng)用、提供多用戶管理的Keycloak 應(yīng)用、提供安全認(rèn)證管理的Kerberos 應(yīng)用以及提供授權(quán)管理的Ranger 應(yīng)用。
Fig.2 The design of BDOS platform圖2 大數(shù)據(jù)應(yīng)用云平臺整體設(shè)計
BDOS 容器應(yīng)用發(fā)布設(shè)計如圖3 所示。首先,BDOS 容器應(yīng)用發(fā)布有一套標(biāo)準(zhǔn)的配置文件,系統(tǒng)管理人員按照要求從BDOS 圖形化操作界面輸入容器的Dockerfile,監(jiān)控面板配置(兼容開源軟件Grafana 的配置文件格式)、對外提供服務(wù)的接口、監(jiān)控報警配置(兼容開源軟件Prometheus 的配置文件格式)等其他配置選項(xiàng),然后將應(yīng)用一鍵發(fā)布成容器。
Fig.3 The design of application deployment圖3 大數(shù)據(jù)應(yīng)用云平臺容器應(yīng)用發(fā)布設(shè)計
該容器運(yùn)行在BDOS 應(yīng)用云平臺之后會與Prometheus監(jiān)控報警系統(tǒng)、Grafana 監(jiān)控面板、Logviewer 日志系統(tǒng)進(jìn)行自動對接,不需要再進(jìn)行任何手工配置。容器應(yīng)用安裝和部署均由BDOSCore 應(yīng)用完成。首先在安裝過程中,BDOSCore 根據(jù)Dockerfile 和其他配置文件,生成該應(yīng)用容器鏡像,然后將鏡像推送到BDOS 鏡像倉庫。在部署過程中,BDOS Core 在收集了該容器應(yīng)用的所有配置文件后,通過接口調(diào)用,將這些文件分別發(fā)送到Prometheus(及Pro?metheus Alert Manager)和Grafana 應(yīng)用中,并使新的配置文件在Prometheus 和Grafana 應(yīng)用中得到啟用。同時,BDOS Core 生成該應(yīng)用的Marathon 任務(wù)文件并通過接口調(diào)用發(fā)送給Marathon,Marathon 會從容器鏡像拉取該應(yīng)用的鏡像進(jìn)行容器部署。需注意在宿主機(jī)上部署容器時,容器應(yīng)用會將日志寫入指定的宿主機(jī)目錄。而每個宿主機(jī)都將運(yùn)行一個Logviewer Agent 容器,收集指定目錄的所有日志,并通過BDOSWeb 應(yīng)用中的Logviewer 界面展示給系統(tǒng)管理人員。另外,在宿主機(jī)中,BDOS 運(yùn)行一個Node Exporter 容器應(yīng)用收集宿主機(jī)資源(CPU、內(nèi)存、硬盤、網(wǎng)絡(luò))監(jiān)控指標(biāo)并發(fā)送給Prometheus,以完成集群資源監(jiān)控和報警。最后,每個容器應(yīng)用配置一個App Exporter 服務(wù)將該容器應(yīng)用的監(jiān)控指標(biāo)(比如Http 訪問請求數(shù)、Http 請求處理時長等)傳送給Prometheus,從而實(shí)現(xiàn)應(yīng)用級別的監(jiān)控和報警。
BDOS 支持多用戶系統(tǒng),每個用戶使用同一個ID 和賬號登錄系統(tǒng)中的所有應(yīng)用,并使用同一ID 安全訪問大數(shù)據(jù)系統(tǒng)的所有組件。多用戶安全體系設(shè)計如圖4 所示。
首先,用戶在應(yīng)用中的身份認(rèn)證通過OpenID Connect協(xié)議完成。每個新用戶創(chuàng)建時,BDOSCore 應(yīng)用會在開源的Keycloak 應(yīng)用中創(chuàng)建該用戶(和其所屬的組),同時在集群所有宿主機(jī)上創(chuàng)建該用戶Linux 賬號,并在Kerberos 應(yīng)用中創(chuàng)建該用戶密鑰Keytab 文件。BDOS 運(yùn)行的系統(tǒng)應(yīng)用(通過相應(yīng)的代碼開發(fā)與集成)運(yùn)行OpenID Connect 插件,當(dāng)用戶登錄這些系統(tǒng)應(yīng)用時,系統(tǒng)應(yīng)用通過Keycloak 應(yīng)用進(jìn)行身份認(rèn)證,認(rèn)證通過以后,用戶即可使用同一個賬號登錄進(jìn)入系統(tǒng)應(yīng)用,這與使用微信賬號登錄多部手機(jī)應(yīng)用是同一道理。當(dāng)用戶需要訪問大數(shù)據(jù)組件(Hadoop、Hive、Spark和Kafka 等)時,BDOS Core 應(yīng)用會將該用戶的ID 以及密鑰Keytab 文件傳送給需要訪問的大數(shù)據(jù)組件。這些大數(shù)據(jù)組件首先訪問Keycloak 應(yīng)用,確認(rèn)該用戶已注冊并獲取用戶所屬組的信息;然后與ApacheRanger 應(yīng)用通訊,確認(rèn)該用戶和其所屬的組有訪問該大數(shù)據(jù)組件的授權(quán);最后與Ker?beros 應(yīng)用通訊,確認(rèn)該用戶的Keytab 密鑰是有效的。當(dāng)這些安全認(rèn)證和資源授權(quán)通過以后,該用戶即可在相應(yīng)的大數(shù)據(jù)組件上讀寫數(shù)據(jù)。BDOS 應(yīng)用云平臺對應(yīng)用層開源大數(shù)據(jù)應(yīng)用Hue、Superset、Zeppelin 和Jupyter Notebook,以及大數(shù)據(jù)開源組件Hadoop、Hive、Spark 和Kafka 均進(jìn)行了開源代碼修改,以確保整個用戶安全認(rèn)證體系的統(tǒng)一實(shí)現(xiàn),這些修改將被提交到相應(yīng)開源項(xiàng)目以回饋開源社區(qū)。
Fig.4 The design of multi-tenancy system圖4 大數(shù)據(jù)應(yīng)用云平臺多用戶安全體系設(shè)計
在項(xiàng)目規(guī)劃初期,按照傳統(tǒng)各廠商部署模式,武漢健康云預(yù)估的虛擬機(jī)是130 臺,但實(shí)施大數(shù)據(jù)應(yīng)用云平臺方案以后,僅使用72 臺虛擬機(jī),將規(guī)劃資源(虛擬機(jī),CPU,內(nèi)存,硬盤)降低了30%~50%。將所有應(yīng)用轉(zhuǎn)換成微服務(wù)架構(gòu)后,各廠商自行進(jìn)行應(yīng)用發(fā)布和升級,從預(yù)估以周為單位的發(fā)布升級提升為以天為單位的發(fā)布升級。由于不同應(yīng)用廠商發(fā)布的應(yīng)用可運(yùn)行在同一個虛擬機(jī)之上,系統(tǒng)資源使用率從預(yù)估的5%增長到30%,提高5~6 倍。
大數(shù)據(jù)應(yīng)用云平臺上線以后,整個系統(tǒng)支持彈性擴(kuò)展和按需擴(kuò)容,從三年規(guī)劃變?yōu)橐荒暌?guī)劃。首先是軟件彈性擴(kuò)容。例如:一個廠商在上線前突然需發(fā)布兩個新的應(yīng)用,在新的架構(gòu)下,幾分鐘之后即可發(fā)布上線,無需等待分配新機(jī)器及配置。新的應(yīng)用也無需到任何機(jī)器上安裝,直接從界面上傳到容器倉庫。在負(fù)載增大時可直接點(diǎn)擊配置界面,一鍵擴(kuò)容,將一個應(yīng)用實(shí)例擴(kuò)展為N 個應(yīng)用實(shí)例,無需指定任何機(jī)器,手動安裝,或者手動配置負(fù)載均衡;其次是硬件的彈性擴(kuò)容,需要增加新的虛擬機(jī)進(jìn)入集群時,系統(tǒng)管理人員僅需運(yùn)行幾個命令,5min 之內(nèi)即可將一臺新的虛擬級加入集群。本文將在疫情防控案例分析中詳細(xì)闡述彈性擴(kuò)容設(shè)計和實(shí)現(xiàn)。
大數(shù)據(jù)應(yīng)用云平臺支持圖形化的方式進(jìn)行應(yīng)用發(fā)布和管理。每個應(yīng)用開發(fā)廠商均有獨(dú)立的賬號,登錄后可以進(jìn)行各自的應(yīng)用發(fā)布和管理,互相不干擾。應(yīng)用發(fā)布和管理的界面可將Tomcat 的war 包、Java 開發(fā)的Jar 包以及其他語言開發(fā)的系統(tǒng),以統(tǒng)一配置的方式發(fā)布成容器應(yīng)用,發(fā)布后可進(jìn)行容器啟動、停止、擴(kuò)容、降容、配置修改、配置回滾等各種操作。同時,各系統(tǒng)之間的調(diào)用通過Mesos 內(nèi)置的L4 自動負(fù)載均衡加虛擬IP(VIP)實(shí)現(xiàn),無需安裝內(nèi)部DNS 系統(tǒng),或者以固定IP 或手動配置方式實(shí)現(xiàn)負(fù)載均衡。這一特性極大簡化了服務(wù)訪問配置復(fù)雜性,在擴(kuò)容或負(fù)載遷移的情況下均無需更改配置。
大數(shù)據(jù)應(yīng)用云平臺支持系統(tǒng)的高可用。首先是整個系統(tǒng)沒有無單點(diǎn)失效,當(dāng)某個應(yīng)用崩潰的時候,Mesos 會將該應(yīng)用進(jìn)行自動重啟;其次是當(dāng)某個虛擬機(jī)遭遇硬件故障下線時,Mesos 會自動將該虛擬機(jī)上運(yùn)行的應(yīng)用遷移到其他有效的并且滿足應(yīng)用資源需求的虛擬機(jī)上。同時,由于使用了負(fù)載均衡及虛擬IP 模式部署容器應(yīng)用,各應(yīng)用實(shí)例之間不會出現(xiàn)資源沖突(端口、存儲、第三方庫),所以可保證容器應(yīng)用遷移成功。
大數(shù)據(jù)應(yīng)用云平臺支持統(tǒng)一、自動的監(jiān)控、報警和日志管理。BDOS 大數(shù)據(jù)操作系統(tǒng)通過容器應(yīng)用發(fā)布的統(tǒng)一配置,使每個運(yùn)行的容器應(yīng)用以統(tǒng)一方式對外發(fā)布監(jiān)控指標(biāo),進(jìn)行監(jiān)控報警配置,同時將應(yīng)用日志寫入統(tǒng)一的本地硬盤目錄。因此這些容器應(yīng)用的監(jiān)控指標(biāo)將被Prometheus監(jiān)控系統(tǒng)自動收集,它們的監(jiān)控配置也會自動發(fā)送到Pro?metheus 的Alert Manager 并進(jìn)行監(jiān)控。BDOS 自帶的日志系統(tǒng)通過部署在每個虛擬機(jī)的代理程序?qū)⑦@些容器應(yīng)用發(fā)布的日志統(tǒng)一收集起來并在圖形化的界面上進(jìn)行展示。除了容器應(yīng)用的監(jiān)控,BDOS 還在各虛擬機(jī)部署了節(jié)點(diǎn)資源監(jiān)控及容器監(jiān)控代理服務(wù),將節(jié)點(diǎn)資源(CPU、內(nèi)存、硬盤空間)容器使用資源(CPU、內(nèi)存、容器文件空間)均納入了統(tǒng)一的監(jiān)控系統(tǒng)。
大數(shù)據(jù)應(yīng)用云平臺上線以后,支撐了武漢健康云13 家醫(yī)療應(yīng)用廠商開發(fā)的數(shù)十種不同后臺服務(wù)及大數(shù)據(jù)應(yīng)用軟件的穩(wěn)定運(yùn)行。在疫情期間,由于需支持?jǐn)?shù)百萬人同時在線進(jìn)行核酸檢測結(jié)果查詢,平臺在幾個小時之內(nèi)的訪問量急劇上升,多個應(yīng)用出現(xiàn)訪問瓶頸,同時系統(tǒng)資源使用率也攀升到90%左右。在這種情況下,系統(tǒng)管理員快速進(jìn)行了軟件和硬件的彈性擴(kuò)容,在短短的十幾分鐘之內(nèi)將系統(tǒng)負(fù)載和資源使用率降到平穩(wěn)程度,可滿足急劇增加的訪問請求,保證系統(tǒng)穩(wěn)定運(yùn)行。
彈性擴(kuò)容的實(shí)現(xiàn)首先需依靠對容器應(yīng)用和系統(tǒng)資源的監(jiān)控。本文在介紹系統(tǒng)設(shè)計時,已指出BDOS 支持對應(yīng)用級與虛擬機(jī)資源的監(jiān)控和報警。系統(tǒng)管理人員可通過BDOS 可視化監(jiān)控面板監(jiān)測應(yīng)用及系統(tǒng)的運(yùn)行情況(彩圖掃OSID 碼可見),集群資源監(jiān)控面板中,集群節(jié)點(diǎn)CPU和內(nèi)存使用情況一目了然。應(yīng)用級別的監(jiān)控面板對應(yīng)用資源的最高使用率用紅色標(biāo)注以引起系統(tǒng)管理人員的注意。BDOS 報警系統(tǒng)在系統(tǒng)出現(xiàn)異常情況時,例如某個應(yīng)用的Http 訪問請求數(shù)急劇增加,某個節(jié)點(diǎn)資源使用率達(dá)90%以上,將通過內(nèi)部郵件或短信的形式通知系統(tǒng)管理人員,進(jìn)行有效干預(yù)。
在疫情期間,由于數(shù)百萬人同時在線進(jìn)行核酸檢測結(jié)果查詢,負(fù)責(zé)結(jié)果查詢的容器應(yīng)用的Http 訪問請求數(shù)急劇增加,同時Http 請求處理時間也出現(xiàn)延時。系統(tǒng)管理人員在收到報警信息后,通過觀察監(jiān)控面板確認(rèn)訪問流量增加,立即實(shí)施了容器應(yīng)用的軟件擴(kuò)容。軟件擴(kuò)容首先是底層系統(tǒng)的支持,Mesos 本身支持容器實(shí)例快速擴(kuò)容,使各虛擬機(jī)從統(tǒng)一的容器倉庫拉取容器鏡像進(jìn)行快速安裝和啟動;其次,BDOS 圖形化界面提供應(yīng)用一鍵擴(kuò)容功能,系統(tǒng)管理人員僅需點(diǎn)擊鼠標(biāo),在幾秒鐘之內(nèi)即可完成容器應(yīng)用的擴(kuò)容。當(dāng)多個容器應(yīng)用均需進(jìn)行軟件擴(kuò)容時,依靠在Mesos 中實(shí)現(xiàn)的帶權(quán)重的DRF(Dominant Resource Fairness)算法[7]實(shí)現(xiàn)資源分配。該算法是帶權(quán)重的最大最小化公平分配算法(Max-Min Fair Share Algorithm)[8],是在多種資源情況下的一種實(shí)現(xiàn),盡量滿足容器應(yīng)用資源請求中的最小需求,然后將集群中剩余的資源公平地分配給剩下的容器應(yīng)用。帶權(quán)重的DRF 算法在實(shí)踐中被證實(shí)比其他公平性算法有更好的總體性能[7]。最近研究表明,該算法還可被改進(jìn)以進(jìn)一步提高資源使用率[9]。
在應(yīng)對疫情期間訪問流量急劇增加的過程中,系統(tǒng)管理人員還發(fā)現(xiàn)系統(tǒng)資源不足的情況,即集群沒有足夠資源滿足軟件彈性擴(kuò)容的需求,需執(zhí)行硬件彈性擴(kuò)容。首先系統(tǒng)管理人員將預(yù)先準(zhǔn)備的虛擬機(jī)節(jié)點(diǎn)IP 信息輸入到BDOS圖形化界面,然后點(diǎn)擊“一鍵擴(kuò)容”。接著,BDOSCore 應(yīng)用啟動虛擬機(jī)部署程序,該程序支持并發(fā)式部署模式,可在很短時間內(nèi)完成對多個虛擬機(jī)節(jié)點(diǎn)初始配置和軟件安裝,將虛擬機(jī)加入到集群中并投入使用。在實(shí)際操作中,加入一個新的虛擬機(jī)節(jié)點(diǎn)時耗在5min 以內(nèi),在演練過程中,同時加入5 個虛擬機(jī)節(jié)點(diǎn)用時在10min 左右。
BDOS 大數(shù)據(jù)應(yīng)用云平臺彈性擴(kuò)容機(jī)制在疫情期間發(fā)揮了重要作用,對于系統(tǒng)管理人員和應(yīng)用開發(fā)廠商而言,該機(jī)制從操作簡便性與反應(yīng)快速性方面均遠(yuǎn)超傳統(tǒng)方式下的軟硬件擴(kuò)容方案。傳統(tǒng)方式下,新應(yīng)用的安裝及新虛擬機(jī)的配置需手動操作,步驟繁瑣而且非常耗時,同時通過人工判斷如何進(jìn)行資源分配很難達(dá)到預(yù)期效果。相比之下,BDOS 支持圖形化界面操作,應(yīng)用及系統(tǒng)監(jiān)控是可視化界面,軟硬件擴(kuò)容也是可視化界面一鍵操作,非常方便。同時,容器應(yīng)用彈性擴(kuò)容所需資源由DRF 算法保證其公平性,保證了多個容器應(yīng)用彈性擴(kuò)容需求能被自動、公平地完成。
現(xiàn)有大型信息化系統(tǒng)云化、容器化是必然趨勢,使用一個統(tǒng)一、高效、可靠的PaaS 平臺是關(guān)鍵。在建設(shè)武漢健康云項(xiàng)目的過程中,基于Mesos+Docker 的大數(shù)據(jù)應(yīng)用云平臺方案證明是符合需求的架構(gòu)。從開始架構(gòu)設(shè)計(2017 年10 月)到集成13 家廠商的應(yīng)用系統(tǒng)上線(2017 年11 月),時耗控制在1 個月以內(nèi)。從系統(tǒng)目前運(yùn)營情況,包括應(yīng)用集成、發(fā)布升級速度,系統(tǒng)穩(wěn)定性,資源使用的效率以及運(yùn)維靈活方便性等方面來看,該平臺達(dá)到了設(shè)計要求。在大數(shù)據(jù)應(yīng)用云平臺之上建設(shè)的武漢市健康云也成功打通了全市43 家公立醫(yī)院和204 家基層醫(yī)療機(jī)構(gòu)及部分部、省屬醫(yī)院,是武漢市智慧醫(yī)療建設(shè)的一次提檔升級。國家衛(wèi)生健康委基層司將該項(xiàng)目定位為全國基層健康信息惠民應(yīng)用試點(diǎn)示范項(xiàng)目。
與大部分企業(yè)信息化發(fā)展歷程相似,醫(yī)療行業(yè)在發(fā)展初期大多強(qiáng)調(diào)業(yè)務(wù)軟件開發(fā)與功能的實(shí)現(xiàn),隨著系統(tǒng)的增多,各種應(yīng)用煙囪效應(yīng)逐漸暴露,在數(shù)據(jù)使用和資源利用方面也出現(xiàn)了相同問題。武漢市城市“智慧健康”項(xiàng)目借助智領(lǐng)云BDOS 提供的大數(shù)據(jù)應(yīng)用云平臺方案,真正實(shí)現(xiàn)了資源的高效利用,尤其在新冠疫情期間,系統(tǒng)能在兩天內(nèi)實(shí)現(xiàn)快速彈性擴(kuò)容,支撐數(shù)百萬人在線核酸檢測結(jié)果查詢,在突如其來的疫情中實(shí)現(xiàn)了最大化的應(yīng)急防控,該項(xiàng)目建立的可持續(xù)發(fā)展的醫(yī)療服務(wù)平臺更為健康中國建設(shè)起到了添磚加瓦的作用。