馮婷婷,畢延潔,胡宇明,楊宏亮,劉衛(wèi)兵
1. 清華大學(xué)天津高端裝備研究院,天津 300300
2. 泰山智能制造產(chǎn)業(yè)研究院,山東 泰安 271000
隨著京津冀協(xié)同發(fā)展的不斷深化,科技服務(wù)業(yè)對(duì)地區(qū)產(chǎn)業(yè)升級(jí)的作用日益突出。京津冀裝備制造業(yè)科技服務(wù)資源分布不均衡,部分地區(qū)傳統(tǒng)產(chǎn)業(yè)轉(zhuǎn)型升級(jí)需求迫切,創(chuàng)新創(chuàng)業(yè)對(duì)科技服務(wù)的需求較為突出,亟需促進(jìn)科技服務(wù)資源的共建共享。通過(guò)建立一個(gè)京津冀裝備制造業(yè)智庫(kù)系統(tǒng)和資源庫(kù),完善服務(wù)系統(tǒng),培育科技服務(wù)業(yè),推動(dòng)科技服務(wù)資源與實(shí)際需求的精準(zhǔn)對(duì)接,對(duì)提升京津冀科技服務(wù)協(xié)同支撐能力具有重要意義。
京津冀裝備制造業(yè)智庫(kù)服務(wù)系統(tǒng),依托三地裝備制造業(yè)大數(shù)據(jù)資源匯聚建設(shè),由數(shù)據(jù)資源池管理系統(tǒng)、智庫(kù)門(mén)戶系統(tǒng)和會(huì)員精準(zhǔn)服務(wù)系統(tǒng)等三個(gè)子系統(tǒng)組成。平臺(tái)以科技成果轉(zhuǎn)化為實(shí)際效益為目標(biāo),匯聚優(yōu)勢(shì)智庫(kù)資源,面向裝備制造業(yè)提供規(guī)劃咨詢(xún)、技術(shù)轉(zhuǎn)移、檢驗(yàn)認(rèn)證、成果轉(zhuǎn)化等智力服務(wù)。如何在信息安全的前提下,通過(guò)合理的架構(gòu)設(shè)計(jì)和管理方式的優(yōu)化,來(lái)確保系統(tǒng)低故障率運(yùn)行,從而提升服務(wù)質(zhì)量,是平臺(tái)長(zhǎng)期運(yùn)營(yíng)所不可回避的問(wèn)題[1]。
高可用性(High Availability, HA)作為衡量應(yīng)用系統(tǒng)質(zhì)量的重要指標(biāo)之一,通常被定義為應(yīng)用系統(tǒng)保持正常運(yùn)行的時(shí)間占比。衡量應(yīng)用系統(tǒng)是否具備高可用性,主要的指標(biāo)包括平均無(wú)故障時(shí)間(MTTF)和可維護(hù)性平均維修時(shí)間(MTTR),可采用如下公式計(jì)算:High Availability = MTTF/(MTTF+MTTR) * 100%[2]。通過(guò)對(duì)網(wǎng)絡(luò)環(huán)境、硬件設(shè)施、應(yīng)用系統(tǒng)架構(gòu)等的優(yōu)化設(shè)計(jì),降低系統(tǒng)的故障率和停機(jī)率是提升可用性的主要手段。
京津冀制造業(yè)智庫(kù)服務(wù)系統(tǒng)采用基于JavaEE 的微服務(wù)架構(gòu)實(shí)現(xiàn),面向公眾、科研院所、中小企業(yè)提供一站式精準(zhǔn)的互聯(lián)網(wǎng)科技服務(wù)。為保證用戶粘度和服務(wù)質(zhì)量,要求系統(tǒng)7×24 小時(shí)不間斷,而且需要具備較高的并發(fā)處理能力和易維護(hù)性,所以在研究提升系統(tǒng)可用性之前,首先要將運(yùn)行風(fēng)險(xiǎn)進(jìn)行總結(jié)歸納,做到有的放矢。
據(jù)統(tǒng)計(jì),造成軟件系統(tǒng)服務(wù)中止的主要原因占比,一般為硬件40%、軟件30%、人為20%、環(huán)境10%。而影響應(yīng)用系統(tǒng)服務(wù)持續(xù)性的因素有很多,有技術(shù)因素也有管理因素,歸納如下:
基礎(chǔ)設(shè)施包括網(wǎng)絡(luò)鏈路、服務(wù)器、服務(wù)器托管、防火墻等硬件設(shè)備或服務(wù)。故障所造成應(yīng)用系統(tǒng)中斷問(wèn)題主要集中在:計(jì)劃外斷電、網(wǎng)絡(luò)攻擊、服務(wù)器硬盤(pán)損壞、DNS 服務(wù)中斷、存儲(chǔ)空間不足等?;A(chǔ)設(shè)施故障相對(duì)容易排查。
除了要保障基礎(chǔ)的應(yīng)用軟件環(huán)境外,還要保障服務(wù)支撐平臺(tái)應(yīng)用的正常,此類(lèi)故障對(duì)系統(tǒng)可用性影響較大,歸納如表1 所示。
表1 公共服務(wù)及應(yīng)用支撐系統(tǒng)常見(jiàn)故障一覽表Table 1 List of common failures of public service and application support systems
日常維護(hù)中,應(yīng)用軟件環(huán)境和應(yīng)用支撐出問(wèn)題的幾率比較高,大多通過(guò)定期巡檢和利用監(jiān)控軟件進(jìn)行預(yù)防。
在程序架構(gòu)設(shè)計(jì)無(wú)重大缺陷的情況下,應(yīng)用程序自身在從試運(yùn)行轉(zhuǎn)為運(yùn)維期后,大多已經(jīng)歷了多輪測(cè)試和BUG 修補(bǔ),故障風(fēng)險(xiǎn)相對(duì)較低。而子系統(tǒng)按照業(yè)務(wù)特點(diǎn)不同,高可用性設(shè)計(jì)的側(cè)重也不同。例如,智庫(kù)門(mén)戶系統(tǒng)面向公眾開(kāi)放,有較高的數(shù)據(jù)安全性、訪問(wèn)終端兼容性和服務(wù)持續(xù)性要求;對(duì)于會(huì)員精準(zhǔn)服務(wù)系統(tǒng)等需要與外部系統(tǒng)進(jìn)行頻繁數(shù)據(jù)交換的系統(tǒng),則在保證應(yīng)用系統(tǒng)本身可用的基礎(chǔ)上,還要關(guān)注數(shù)據(jù)接口應(yīng)用的穩(wěn)定性。此外,系統(tǒng)功能迭代、流程優(yōu)化等因素,也會(huì)在一定周期內(nèi),不同程度地影響服務(wù)的持續(xù)性。
安全風(fēng)險(xiǎn)貫穿基礎(chǔ)設(shè)施、應(yīng)用支撐系統(tǒng)、應(yīng)用系統(tǒng)等諸多環(huán)節(jié),安全隱患和突發(fā)的安全事件所導(dǎo)致的服務(wù)中斷時(shí)有發(fā)生。為落實(shí)國(guó)家網(wǎng)絡(luò)與信息安全的工作部署,平臺(tái)建立了完善的管理制度、規(guī)范,定期對(duì)應(yīng)用系統(tǒng)進(jìn)行安全漏洞掃描,存在安全風(fēng)險(xiǎn)時(shí)需要進(jìn)行安全加固。在嚴(yán)格管理下雖然安全性得到了一定提升,但由于增加了安全管理環(huán)節(jié),也會(huì)使應(yīng)急響應(yīng)效率受到一定影響。
提升高可用性的方法主要是通過(guò)提高平均無(wú)故障時(shí)間(MTTF),同時(shí)降低可維護(hù)性平均維修時(shí)間(MTTR)來(lái)實(shí)現(xiàn)。一般從以下五個(gè)方面重點(diǎn)設(shè)計(jì):(1)降低耦合度減少局部故障對(duì)全局影響,同時(shí)提升日常和突發(fā)故障修復(fù)效率;(2)充分考慮按應(yīng)用場(chǎng)景運(yùn)行情況隨時(shí)可擴(kuò)展;(3)將操作系統(tǒng)、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)連接、軟件部署等系統(tǒng)運(yùn)行風(fēng)險(xiǎn)降至最低; (4)提升服務(wù)器、參數(shù)配置變化、應(yīng)用程序性能和突發(fā)預(yù)警的監(jiān)控可用性;(5)做好定期巡檢,降低周期性運(yùn)行故障風(fēng)險(xiǎn)。
高可用的系統(tǒng)離不開(kāi)高可用的軟硬件架構(gòu)設(shè)計(jì),無(wú)論是集群系統(tǒng)還是分布式系統(tǒng),目標(biāo)都是資源冗余,避免供電、磁盤(pán)、網(wǎng)絡(luò)、應(yīng)用服務(wù)器、應(yīng)用程序等要素的單點(diǎn)故障風(fēng)險(xiǎn)[3]。對(duì)相關(guān)技術(shù)因地制宜地組合應(yīng)用,是提升智庫(kù)服務(wù)系統(tǒng)可用性的關(guān)鍵[4]。
云計(jì)算,能夠通過(guò)虛擬化、網(wǎng)絡(luò)計(jì)算、分布式等技術(shù),提供IaaS(基礎(chǔ)設(shè)施即服務(wù))、PaaS(平臺(tái)即服務(wù))、SaaS(軟件即服務(wù))等架構(gòu)的云網(wǎng)絡(luò)、服務(wù)器、存儲(chǔ)等基礎(chǔ)設(shè)施資源服務(wù)[5]。隨著技術(shù)領(lǐng)域和商業(yè)環(huán)境的發(fā)展,除了一些大型互聯(lián)網(wǎng)公司提供公有云服務(wù)外,企業(yè)事業(yè)單位自建的私有云平臺(tái)的應(yīng)用也日漸成熟。私有云平臺(tái)一般由數(shù)據(jù)中心采用基于集群的集中化管理,由多臺(tái)物理服務(wù)器和存儲(chǔ)聚合組成,不僅降低了管理的復(fù)雜度,還為應(yīng)用系統(tǒng)提供了更經(jīng)濟(jì)、有效、私密且可擴(kuò)展的基礎(chǔ)設(shè)施保障[6]。私有云平臺(tái)可以按照業(yè)務(wù)需求,來(lái)配置帶寬、內(nèi)存、存儲(chǔ)資源,而且主機(jī)克隆、主機(jī)漂移、動(dòng)態(tài)調(diào)整等特性,能夠有效提升服務(wù)的持續(xù)性并縮短停機(jī)恢復(fù)周期。
在集群和分布式系統(tǒng)中都是利用多點(diǎn)協(xié)同,來(lái)規(guī)避單點(diǎn)服務(wù)的風(fēng)險(xiǎn)。負(fù)載均衡利用輪尋、隨機(jī)、源地址散列等算法,將請(qǐng)求任務(wù)分發(fā)給各個(gè)可用節(jié)點(diǎn)進(jìn)行處理。負(fù)載均衡分為 DNS 負(fù)載均衡、IP 負(fù)載均衡、反向代理等模式,可以按照不同的應(yīng)用場(chǎng)景通過(guò)軟件或硬件實(shí)現(xiàn)。在實(shí)際應(yīng)用中,硬件的負(fù)載均衡由于獨(dú)立于應(yīng)用系統(tǒng)部署,更適用于沒(méi)有源碼授權(quán)的集中式軟件產(chǎn)品構(gòu)建集群系統(tǒng),性能和可靠性更好[7]。而軟件負(fù)載均衡更適用于架構(gòu)設(shè)計(jì)、源碼可控的自主開(kāi)發(fā)的軟件系統(tǒng),成本相對(duì)低且應(yīng)用靈活。
集群技術(shù)是通過(guò)網(wǎng)絡(luò)將多臺(tái)提供相同服務(wù)的服務(wù)器連接在一起,組成的大型服務(wù)計(jì)算系統(tǒng),面向客戶端提供統(tǒng)一的應(yīng)用服務(wù),從而解決高并發(fā)時(shí)的服務(wù)穩(wěn)定性。集群技術(shù)本身就是一套高可用性的系統(tǒng),具備提供服務(wù)故障監(jiān)控和故障處理的能力,通過(guò)資源的冗余和利用率的監(jiān)控,利用負(fù)載均衡的方式降低應(yīng)用中止的概率[8]。分布式與集群系統(tǒng)不同,是指將系統(tǒng)中的不同業(yè)務(wù)單元拆分,并分布在多個(gè)節(jié)點(diǎn)上部署,面向客戶端提供統(tǒng)一服務(wù)。為防止某個(gè)節(jié)點(diǎn)服務(wù)中止所導(dǎo)致的整體應(yīng)用中斷,分布式中的每個(gè)業(yè)務(wù)節(jié)點(diǎn)都可以做集群。
集群可用于多種應(yīng)用服務(wù),中間件方面 Apache, Ngix, Weblogic 都提供了集群配置方案,數(shù)據(jù)庫(kù)方面 Oracle Rac, Mysql Cluster 也都提供了數(shù)據(jù)庫(kù)的集群部署方案。集群是比較常用的高可用方案,尤其通過(guò)硬件負(fù)載均衡設(shè)備能夠簡(jiǎn)單、快速地搭建集群應(yīng)用系統(tǒng)。分布式系統(tǒng)由于復(fù)雜的技術(shù)特性,具備分布式思想的微服務(wù)架構(gòu)更適合科技服務(wù)類(lèi)軟件系統(tǒng)的構(gòu)建。
作為一種架構(gòu)風(fēng)格,微服務(wù)是以專(zhuān)注于單一責(zé)任的小型功能模塊為基礎(chǔ),通過(guò) API 集相互通信的方式完成復(fù)雜系統(tǒng)搭建的一種設(shè)計(jì)思想[9]。大型的軟件系統(tǒng)可以由多個(gè)微服務(wù)組成,而且它是松耦合的,可被獨(dú)立部署[10]。與分布式的細(xì)微差別是,微服務(wù)的應(yīng)用不一定是分散在多個(gè)服務(wù)器上,他也可以是同一個(gè)服務(wù)器。通過(guò)微服務(wù)的分布式/版本化配置、服務(wù)發(fā)現(xiàn)、路由、斷路器、服務(wù)網(wǎng)關(guān)、分布式消息傳遞等應(yīng)用組建的提供, Spring Cloud 能夠完整地提供整體解決方案[11]。
該架構(gòu)已在電子商務(wù)平臺(tái)、工業(yè)互聯(lián)網(wǎng)等對(duì)并發(fā)性能和系統(tǒng)穩(wěn)定性要求極高的應(yīng)用領(lǐng)域得到了廣泛應(yīng)用[10]。團(tuán)隊(duì)協(xié)同開(kāi)發(fā)便捷、服務(wù)的可復(fù)用性和高可用等特點(diǎn),使之非常適合智庫(kù)系統(tǒng)的構(gòu)建。
具備高可用性的系統(tǒng)架構(gòu)設(shè)計(jì),是從技術(shù)角度降低運(yùn)行風(fēng)險(xiǎn)的基礎(chǔ),而系統(tǒng)架構(gòu)也是需要結(jié)合具體的應(yīng)用場(chǎng)景和基礎(chǔ)條件綜合考慮。下面結(jié)合京津冀制造業(yè)智庫(kù)服務(wù)系統(tǒng)的兩個(gè)應(yīng)用案例,簡(jiǎn)要介紹負(fù)載均衡集群和微服務(wù)架構(gòu)的應(yīng)用。
智庫(kù)門(mén)戶系統(tǒng)是平臺(tái)面向用戶的服務(wù)入口,也是系統(tǒng)平臺(tái)各子系統(tǒng)的高度集成。門(mén)戶系統(tǒng)依托智庫(kù)平臺(tái)數(shù)據(jù)資源池建設(shè),以京津冀制造業(yè)企業(yè)為主體,面向公眾提供智庫(kù)資源的分類(lèi)導(dǎo)航、知識(shí)數(shù)據(jù)資源、全文檢索、會(huì)員登錄等服務(wù)。智庫(kù)資源池?cái)?shù)據(jù)管理系統(tǒng),是平臺(tái)整體的運(yùn)行和管理中心,由各級(jí)系統(tǒng)管理員負(fù)責(zé)管理,按照角色進(jìn)行權(quán)限控制,主要用于維護(hù)平臺(tái)數(shù)據(jù)資源。
在系統(tǒng)高可用性方面,需要考慮的主要問(wèn)題: (1)系統(tǒng)由關(guān)系型數(shù)據(jù)庫(kù)持久化存儲(chǔ),數(shù)據(jù)量較大對(duì)數(shù)據(jù)庫(kù)并發(fā)處理性能要求較高;(2)智庫(kù)資源池?cái)?shù)據(jù)管理系統(tǒng),如暴露在外網(wǎng)訪問(wèn)存在潛在的數(shù)據(jù)安全風(fēng)險(xiǎn);(3)兩系統(tǒng)均采用單體應(yīng)用模式建設(shè),系統(tǒng)耦合度高,容易出現(xiàn)局部故障導(dǎo)致的整體服務(wù)中止;(4)門(mén)戶系統(tǒng)面向公眾服務(wù),用戶數(shù)量激增的情況下,應(yīng)保障系統(tǒng)的并發(fā)處理能力。綜合上述需求,系統(tǒng)架構(gòu)設(shè)計(jì)如圖1 所示。
由于兩個(gè)子系統(tǒng)均為單體應(yīng)用,采用硬件負(fù)載均衡的方式搭建集群架構(gòu)系統(tǒng),無(wú)需對(duì)應(yīng)用本身進(jìn)行改造,同時(shí)能夠滿足應(yīng)用的高可用性。負(fù)載均衡設(shè)備為系統(tǒng)劃分了兩個(gè)域,分別由兩個(gè)二級(jí)域名 DNS 指向,形成“智庫(kù)資源池?cái)?shù)據(jù)管理系統(tǒng)集群”、“智庫(kù)門(mén)戶系統(tǒng)集群”兩個(gè)應(yīng)用集群組。應(yīng)用服務(wù)各子系統(tǒng)業(yè)務(wù)功能相對(duì)獨(dú)立,而又需要面向會(huì)員提供一體化的協(xié)同服務(wù)。
圖1 負(fù)載均衡集群Fig.1 Load balancing cluster
由于硬件負(fù)載集群對(duì)基礎(chǔ)設(shè)施資源數(shù)量需求比較高,所以在系統(tǒng)高可用方面,考慮更輕巧、擴(kuò)展性的采用應(yīng)用級(jí)架構(gòu)。設(shè)計(jì)開(kāi)發(fā)之初,應(yīng)用程序被拆分為多個(gè)“服務(wù)聚合模式”的微服務(wù)組,分別是智能消息、智能問(wèn)答與在線咨詢(xún)、需求承接、資源調(diào)用服務(wù)等。每個(gè)“服務(wù)聚合”按照業(yè)務(wù)特點(diǎn)被拆分為若干個(gè)微服務(wù)應(yīng)用。如圖2 所示。
上述微服務(wù),可按照業(yè)務(wù)應(yīng)用負(fù)載情況進(jìn)行靈活部署,可以部署在1 臺(tái)或多臺(tái)云主機(jī)應(yīng)用服務(wù)器上。微服務(wù)拆分方面,在平臺(tái)有高并發(fā)需求,可按需求擴(kuò)展部署,另外附件上傳、附件導(dǎo)出、照片顯示等資源類(lèi)操作的功能也被拆分為微服務(wù)獨(dú)立部署,可供其他聚合服務(wù)調(diào)用,通過(guò)統(tǒng)一的服務(wù)提供來(lái)避免重復(fù)開(kāi)發(fā)帶來(lái)的多點(diǎn)故障風(fēng)險(xiǎn)。
微服務(wù)架構(gòu)在會(huì)員精準(zhǔn)服務(wù)系統(tǒng)的應(yīng)用,能夠器方面,采用6 臺(tái)私有云主機(jī)配置到兩個(gè)集群組中。“智庫(kù)資源池?cái)?shù)據(jù)管理集群”由2 臺(tái)云主機(jī)組成,面向各類(lèi)管理員提供服務(wù)。另一組由4 臺(tái)虛擬機(jī)組成“智庫(kù)門(mén)戶系統(tǒng)集群”,面向公眾提供服務(wù)。數(shù)據(jù)庫(kù)方面,出于性能考慮由2 臺(tái)主機(jī)搭建 Mysql Cluster 集群,緩解數(shù)據(jù)并發(fā)壓力。在網(wǎng)絡(luò)安全策略方面,智庫(kù)資源池?cái)?shù)據(jù)管理系統(tǒng),限制在內(nèi)網(wǎng)訪問(wèn),外網(wǎng)可通過(guò) VPN 使用系統(tǒng)。系統(tǒng)符合網(wǎng)絡(luò)安全三級(jí)等保要求,利用漏洞掃描工具對(duì)操作系統(tǒng)級(jí)和應(yīng)用程序進(jìn)行了多輪漏洞掃描并完成了全部“低?!奔耙陨下┒吹男扪a(bǔ),保證了系統(tǒng)的安全性。
圖2 微服務(wù)拆分示例Fig.2 Microservices split display
會(huì)員精準(zhǔn)服務(wù)系統(tǒng)集成于門(mén)戶系統(tǒng)中,面向會(huì)員提供智能化的精準(zhǔn)服務(wù),由專(zhuān)家在線咨詢(xún)、智能消息推送、智能問(wèn)答、需求承接等多個(gè)子系統(tǒng)組成,使應(yīng)用的高可用性資源成本有效降低,并且可以根據(jù)應(yīng)用運(yùn)行情況隨意擴(kuò)展硬件資源,是一套可伸縮的輕量級(jí)應(yīng)用程序架構(gòu),非常適合在科技服務(wù)平臺(tái)建設(shè)中推廣和應(yīng)用。
高可用測(cè)試是在系統(tǒng)上線運(yùn)營(yíng)前,通過(guò)人工和自動(dòng)化測(cè)試手段,模擬系統(tǒng)出現(xiàn)故障異常情況,驗(yàn)證局部異常閥值和制定異?;謴?fù)正常狀態(tài)方案的重要手段。
對(duì)于科技服務(wù)類(lèi)系統(tǒng)而言,為保障服務(wù)持續(xù)性,避免因此導(dǎo)致用戶粘度損失,測(cè)試策略上主要圍繞直接面向用戶服務(wù)的功能測(cè)試和服務(wù)開(kāi)展。功能測(cè)試方面,重點(diǎn)在智庫(kù)服務(wù)系統(tǒng)和會(huì)員精準(zhǔn)服務(wù)系統(tǒng)兩個(gè)子系統(tǒng)制定測(cè)試用例,編寫(xiě)單元測(cè)試腳本,迭代分析功能缺陷,輸入內(nèi)容邊界值等關(guān)鍵內(nèi)容;恢復(fù)測(cè)試方面,主要面向整體平臺(tái)驗(yàn)證在單位時(shí)間范圍內(nèi)修正錯(cuò)誤和回復(fù)服務(wù)的可操作性,從而針對(duì)重新初始化,數(shù)據(jù)恢復(fù),應(yīng)用啟動(dòng)制定綜合方案;壓力測(cè)試方面,則是利用Apache JMeter+Badboy 自動(dòng)測(cè)試工具進(jìn)行,通過(guò)Badboy 錄制門(mén)戶系統(tǒng)、專(zhuān)家在線咨詢(xún)等高并發(fā)場(chǎng)景應(yīng)用的測(cè)試腳本,導(dǎo)出至JMeter完成應(yīng)用級(jí)和數(shù)據(jù)庫(kù)自動(dòng)化壓力測(cè)試;安全測(cè)試方面,對(duì)標(biāo)網(wǎng)絡(luò)安全三級(jí)保護(hù)的要求,從數(shù)據(jù)安全、應(yīng)用安全、應(yīng)用服務(wù)器安全三個(gè)方面進(jìn)行自動(dòng)化漏洞掃描,按照高危、中危、低危漏洞評(píng)級(jí),指導(dǎo)迭代修補(bǔ)漏洞。
通過(guò)負(fù)載均衡集群、微服務(wù)架構(gòu)等高可用性技術(shù)的應(yīng)用,京津冀制造業(yè)智庫(kù)服務(wù)系統(tǒng)運(yùn)行故障率低,服務(wù)質(zhì)量得到提升。隨著京津冀一體化的進(jìn)程加快,制造業(yè)智庫(kù)系統(tǒng)高可用性研究將結(jié)合平臺(tái)業(yè)務(wù)發(fā)展和應(yīng)用場(chǎng)景變化,長(zhǎng)期跟蹤系統(tǒng)構(gòu)建技術(shù),因地制宜地進(jìn)行迭代設(shè)計(jì)。本文所提及的探索與應(yīng)用,希望能夠?yàn)橥袀兲峁﹨⒖肌?/p>
利益沖突聲明
所有作者聲明不存在利益沖突關(guān)系。