曹雨薇 張 毅
(中國移動(dòng)(深圳)有限公司,廣東 深圳 518048)
分布式系統(tǒng)運(yùn)維交付解決方案研究與應(yīng)用
曹雨薇 張 毅
(中國移動(dòng)(深圳)有限公司,廣東 深圳 518048)
伴隨著云計(jì)算與大數(shù)據(jù)技術(shù)的飛速發(fā)展,SOA、微服務(wù)等分布式軟件架構(gòu)模式已成為業(yè)務(wù)系統(tǒng)的基本架構(gòu)模式。相對(duì)于傳統(tǒng)的非分布式系統(tǒng),分布式系統(tǒng)以其易擴(kuò)展、高可靠、處理速度快、靈活性強(qiáng)等優(yōu)點(diǎn)逐漸受到業(yè)界的青睞。本文基于分布式系統(tǒng)部署提出更為有效的解決方案,圍繞現(xiàn)有框架進(jìn)行設(shè)計(jì),提出了基于MVC分層架構(gòu)具備可視化流程編排、萬能工具倉庫以及自動(dòng)化作業(yè)管理等核心功能的分布式系統(tǒng)運(yùn)維交付解決方案。
分布式系統(tǒng);工具倉庫;可視化流程編排;自動(dòng)化作業(yè)管理;MVC分層架構(gòu)
隨著網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,軟件運(yùn)行平臺(tái)逐漸從單機(jī)環(huán)境遷移到網(wǎng)絡(luò)環(huán)境,計(jì)算機(jī)系統(tǒng)也由集中式系統(tǒng)逐漸發(fā)展為分布式系統(tǒng)。與此同時(shí),由于分布式計(jì)算技術(shù)在電信、金融等許多關(guān)鍵領(lǐng)域的廣泛應(yīng)用,分布式系統(tǒng)逐漸呈現(xiàn)出規(guī)模龐大,服務(wù)對(duì)象眾多,對(duì)象之間的關(guān)系復(fù)雜等特點(diǎn),由此給分布式系統(tǒng)管理的配置、部署、運(yùn)行監(jiān)控以及維護(hù)帶來了許多問題。為提高系統(tǒng)的性能和可用性,在大型分布式系統(tǒng)中對(duì)應(yīng)用服務(wù)進(jìn)行監(jiān)控和管理就變得尤為重要。因此,如何對(duì)大型分布式系統(tǒng)進(jìn)行高效管理,特別是如何滿足服務(wù)對(duì)象部署一致性以及系統(tǒng)服務(wù)對(duì)象云端狀態(tài)監(jiān)控實(shí)時(shí)性要求,是一個(gè)具有理論意義和實(shí)用價(jià)值的研究。
傳統(tǒng)的運(yùn)維人員通常只面對(duì)幾十或者上百臺(tái)的服務(wù)器,規(guī)模不會(huì)太大,而且相對(duì)應(yīng)用來說,每臺(tái)機(jī)器都是一個(gè)獨(dú)立節(jié)點(diǎn)。但在大規(guī)模分布式集群中,工作任務(wù)明顯不同:首先,運(yùn)維人員面臨的服務(wù)器動(dòng)輒就是三五千臺(tái)甚至上萬臺(tái),量級(jí)大幅提升;其次,分布式操作系統(tǒng)提供存儲(chǔ)、CPU調(diào)度能力、內(nèi)存使用、網(wǎng)絡(luò)等功能,是基本資源的包裝整合,從邏輯上看,相當(dāng)于一臺(tái)計(jì)算機(jī);第三,基于分布式系統(tǒng)開發(fā)的應(yīng)用相當(dāng)于一個(gè)分布式數(shù)據(jù)倉庫,用戶可以在上面進(jìn)行ETL處理、SQL查詢、數(shù)據(jù)導(dǎo)入導(dǎo)出等基本操作,以及實(shí)現(xiàn)一些MATLAB、統(tǒng)計(jì)軟件等功能。因此,與傳統(tǒng)運(yùn)維相比,分布式系統(tǒng)運(yùn)維人員必須要有更強(qiáng)大的整體把控能力,包括對(duì)機(jī)房網(wǎng)絡(luò)、帶寬、硬件、服務(wù)器的性能進(jìn)行優(yōu)化,熟悉上層應(yīng)用,實(shí)現(xiàn)數(shù)據(jù)分析等,做到對(duì)各個(gè)方面的情況了如指掌。因此對(duì)于分布式系統(tǒng)運(yùn)維交付人員來說,亟需一個(gè)更加專業(yè)的分布式系統(tǒng)運(yùn)維交付方案來解決上述繁瑣的技術(shù)操作。
根據(jù)業(yè)界常見的分布式系統(tǒng)運(yùn)維交付解決方案的實(shí)現(xiàn)原理,對(duì)其共同點(diǎn)進(jìn)行抽象建模,提出了一種更普遍更有效的分布式系統(tǒng)運(yùn)維交付解決方案,通過規(guī)劃和統(tǒng)一運(yùn)維交付流程、搭建盡可能全的工具倉庫并融入數(shù)據(jù)作業(yè)的自動(dòng)化管理可以極大提高運(yùn)維、交付人員的工作效率,使系統(tǒng)得以快速上線,從而提高分布式系統(tǒng)交付效率。
目前最常用的分布式系統(tǒng)部署主要依賴系統(tǒng)工程師把主要精力放在監(jiān)控、部署上線以及數(shù)據(jù)備份三個(gè)方面。最初,軟件開發(fā)人員通過對(duì)分布式系統(tǒng)中各節(jié)點(diǎn)程序部署進(jìn)行分別編寫以及各服務(wù)器性能監(jiān)控腳本的編寫來完成相關(guān)操作,這對(duì)于節(jié)點(diǎn)規(guī)模較小的企業(yè)來說是可以滿足的。當(dāng)節(jié)點(diǎn)數(shù)量達(dá)到千臺(tái)左右的情形,開發(fā)人員又開發(fā)出了各種開源的分布式系統(tǒng)集中式操作平臺(tái),其中最為常用的是puppet集中配置管理系統(tǒng),使用自有的puppet描述語言,可管理配置文件、用戶、cron任務(wù)、軟件包、系統(tǒng)服務(wù)等。puppet把這些系統(tǒng)實(shí)體稱之為資源,puppet的設(shè)計(jì)目標(biāo)是簡化對(duì)這些資源的管理以及妥善處理資源間的依賴關(guān)系。客戶端可以與服務(wù)器定期進(jìn)行配置信息同步,從而實(shí)現(xiàn)資源的依賴關(guān)系管理。但此類方法需要安裝puppet工具,同時(shí)需要對(duì)puppet控制代碼進(jìn)行編寫和調(diào)試,其批量部署優(yōu)勢較明顯,這類垂直管理系統(tǒng)的使用極大減輕了工程師在重復(fù)性、批量化操作方面的負(fù)擔(dān),并有效完成既定的運(yùn)維子目標(biāo),但這類軟件只針對(duì)某一垂直領(lǐng)域的特定問題進(jìn)行處理,對(duì)于它們之間的關(guān)聯(lián)性很難應(yīng)付。
圖1 puppet的C/S架構(gòu)圖
本文提出了一種分布式系統(tǒng)運(yùn)維交付解決方案,核心思想是通過一個(gè)平臺(tái)來規(guī)劃和統(tǒng)一運(yùn)維交付流程、搭建盡可能全的工具倉庫以及數(shù)據(jù)作業(yè)的自動(dòng)化管理來實(shí)現(xiàn)分布式系統(tǒng)的運(yùn)維與交付,我們暫且稱該平臺(tái)為分布式系統(tǒng)運(yùn)維交付管理平臺(tái)。
為了便于平臺(tái)的使用、管理和擴(kuò)展,該平臺(tái)必須有如下四層架構(gòu),并采用MVC模式完成實(shí)用性優(yōu)化。
視圖層:建議采用標(biāo)準(zhǔn)規(guī)范的JSP+JSTL結(jié)合面向?qū)ο蟮慕缑娼M件包來進(jìn)行視圖展現(xiàn)。
控制層:建議使用Spring組件包中的Spring-MVC功能,Spring MVC引入了注解驅(qū)動(dòng)功能。使用注解即可實(shí)現(xiàn)一個(gè)普通JAVA類具有Controller的全部功能,同時(shí)Spring-MVC的框架具有靈活性、易用性和擴(kuò)展性。
業(yè)務(wù)層:在實(shí)際的項(xiàng)目開發(fā)中,各個(gè)領(lǐng)域均有自己獨(dú)特的業(yè)務(wù)邏輯并且往往沒有實(shí)現(xiàn)兩個(gè)分離,一個(gè)是前臺(tái)與應(yīng)用的分離,一個(gè)是應(yīng)用與數(shù)據(jù)的分離,故而導(dǎo)致了在傳統(tǒng)項(xiàng)目中代碼高度耦合,比如兩個(gè)業(yè)務(wù)邏輯中相同的子功能或者子模塊原本有可能被重用,但由于它與各自業(yè)務(wù)邏輯綁定在一起導(dǎo)致很難被重用。通過將這些具體邏輯的代碼獨(dú)立出來成為單獨(dú)一層即我們所說的業(yè)務(wù)層,使業(yè)務(wù)層降低與系統(tǒng)其他部分的耦合度,讓該層以最小的改動(dòng)適應(yīng)最大的變化,并建議在編碼時(shí)盡量考慮同一業(yè)務(wù)多種實(shí)現(xiàn)的兼容能力和可擴(kuò)展能力。
數(shù)據(jù)持久層:開發(fā)過程中,與數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互必不可少,主要的數(shù)據(jù)操作包括添加、讀取、修改、刪除,它們占據(jù)了系統(tǒng)開發(fā)中的大部分時(shí)間,由于數(shù)據(jù)庫操作頻率往往較高,該層與數(shù)據(jù)庫交互的性能問題是需要我們重點(diǎn)考慮的,如采用連接池、數(shù)據(jù)緩存等等。因此,在本層實(shí)現(xiàn)中,建議使用MyBatis功能對(duì)JDBC進(jìn)行封裝,實(shí)現(xiàn)面向?qū)ο蟮臉I(yè)務(wù)操作,同時(shí)兼顧業(yè)務(wù)Sql的復(fù)雜性和靈活性。
圖2 基于MVC模式的四層架構(gòu)
為了實(shí)現(xiàn)對(duì)不同用戶的統(tǒng)一管理,本框架通過建立公有工具庫與私有工具庫,面向不同的用戶開放不同的工具執(zhí)行權(quán)限,并記錄工具執(zhí)行記錄,根據(jù)用戶需求執(zhí)行相關(guān)操作,并結(jié)合可視化流程編排與作業(yè)管理從而完成系統(tǒng)的快速上線。圖3提供了一種可供執(zhí)行的框架功能圖。平臺(tái)主要功能由用戶管理、系統(tǒng)管理、資產(chǎn)管理、權(quán)限管理、工具倉庫、審計(jì)管理、應(yīng)用中心、流程管理等組件模塊構(gòu)成,上述是一個(gè)分布式系統(tǒng)運(yùn)維交付所必須具備的基礎(chǔ)功能與核心功能,在此基礎(chǔ)上可根據(jù)具體情況相應(yīng)擴(kuò)展。接下來將詳細(xì)闡述此分布式系統(tǒng)運(yùn)維交付解決方案的核心思想——可視化流程編排、萬能工具倉庫以及自動(dòng)化作業(yè)管理。
圖3 分布式系統(tǒng)運(yùn)維交付基礎(chǔ)框架
分布式運(yùn)維交付管理框架可實(shí)現(xiàn)可視化的流程編排,并生成通用的流程模板供用戶直接調(diào)用,對(duì)于個(gè)性化配置可通過一次性配置保存模板供后續(xù)通過模板管理進(jìn)行調(diào)用而無需重復(fù)配置,從而節(jié)約配置時(shí)間并降低配置復(fù)雜度。以數(shù)據(jù)庫安裝為例,將各類型數(shù)據(jù)庫安裝操作封裝成一個(gè)可視化圖標(biāo)保存在流程庫當(dāng)中,點(diǎn)擊數(shù)據(jù)庫安裝可視化圖標(biāo)展開系列數(shù)據(jù)庫選項(xiàng),可選擇性地安裝特定類型的數(shù)據(jù)庫,并拖拽到流程相應(yīng)節(jié)點(diǎn)中,流程節(jié)點(diǎn)全部拖拽完即生成流程模板保存在模板庫中供本次以及下次調(diào)用。
圖4 可視化流程編排
自動(dòng)化數(shù)據(jù)作業(yè)管理是整個(gè)分布式系統(tǒng)運(yùn)維交付平臺(tái)的核心之一,旨在完成分布式數(shù)據(jù)庫海量數(shù)據(jù)規(guī)劃。傳統(tǒng)方式一般采用腳本管理進(jìn)行數(shù)據(jù)的分布式存儲(chǔ)發(fā)布,通過編寫Linux自動(dòng)處理腳本的方式,執(zhí)行腳本批量導(dǎo)入業(yè)務(wù)數(shù)據(jù)并提交到數(shù)據(jù)庫集群上,并利用腳本監(jiān)控?cái)?shù)據(jù)庫運(yùn)行過程從而實(shí)現(xiàn)半自動(dòng)化的數(shù)據(jù)部署。某種程度上腳本管理節(jié)省了人工干預(yù)成本,但在整個(gè)處理過程中仍然是半自動(dòng)化的不夠智能,每次操作均需開發(fā)人員重新編寫,運(yùn)行時(shí)候出錯(cuò)不易于查找,總的來說需要較多的人工介入。
那么本文所介紹的全自動(dòng)化的數(shù)據(jù)作業(yè)管理是指數(shù)據(jù)分布可配置化管理。具體實(shí)現(xiàn)是在系統(tǒng)內(nèi)部實(shí)現(xiàn)腳本庫,為腳本庫設(shè)置參數(shù),前臺(tái)設(shè)計(jì)不同的功能菜單通過輸入不同的參數(shù)自動(dòng)錄入所匹配的腳本從而實(shí)現(xiàn)前臺(tái)零腳本化的數(shù)據(jù)分布式部署。腳本庫越豐富分布式數(shù)據(jù)庫運(yùn)維交付的自動(dòng)化實(shí)現(xiàn)將越明顯。目前業(yè)界已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)的自動(dòng)部署功能,只需稍加應(yīng)用即可整合到我們的分布式系統(tǒng)運(yùn)維交付框架當(dāng)中,可采用web服務(wù)接口的方式,向目標(biāo)服務(wù)器集群同步數(shù)據(jù)并按規(guī)則劃分各服務(wù)器數(shù)據(jù)節(jié)點(diǎn)及數(shù)據(jù)量,所需部署的數(shù)據(jù)采用XML作為數(shù)據(jù)內(nèi)容的載體,可以方便地轉(zhuǎn)化數(shù)據(jù)庫中的數(shù)據(jù)存儲(chǔ)到XML中。XML是Internet環(huán)境中跨平臺(tái)的、依賴于內(nèi)容的技術(shù),是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。
圖5 自動(dòng)化數(shù)據(jù)作業(yè)管理
工具倉庫包括公共倉庫和私有倉庫兩部分。公共倉庫開放給所有平臺(tái)用戶,平臺(tái)用戶可選擇性執(zhí)行所需要的工具。而私有倉庫是各用戶按需定制。公共倉庫與私有倉庫均可記錄執(zhí)行過程。用戶在登錄后自行加載可供用戶使用的公共工具和私有工具,公共工具由管理員統(tǒng)一發(fā)布,私有工具是用戶根據(jù)個(gè)性化需求自行編寫。平臺(tái)提供統(tǒng)一的工具模板實(shí)現(xiàn)可視化的工具定制。當(dāng)查詢出工具列表后,在后面點(diǎn)擊執(zhí)行工具,后臺(tái)接收頁面上傳過去的參數(shù)并根據(jù)相應(yīng)的腳本代碼去服務(wù)器執(zhí)行,返回執(zhí)行結(jié)果。不同的用戶登錄代表著不同的工具使用權(quán)限,并遵循“通用工具為所有用戶開放、私有工具只為特定用戶開放”的原則。另外可以通過項(xiàng)目組關(guān)聯(lián)項(xiàng)目成員,同一個(gè)項(xiàng)目組下各成員工具倉庫實(shí)現(xiàn)共享,減少重復(fù)定制。
圖6 私有倉庫執(zhí)行工具處理邏輯
可采用gitlab存放腳本文件的形式實(shí)現(xiàn)工具倉庫,亦可通過svn實(shí)現(xiàn),兩者的區(qū)別在于svn以服務(wù)器為中心,用戶直接連在中間服務(wù)器上,本地修改再提交到svn服務(wù)器上,主要用于小項(xiàng)目開發(fā)。而gitlab則可以有效、高速地處理從很小到非常大的項(xiàng)目腳本管理,適用于倉庫管理系統(tǒng)開源項(xiàng)目,使用Git作為代碼管理工具,并在此基礎(chǔ)上搭建服務(wù)。
本文提出一種通用的分布式系統(tǒng)運(yùn)維交付解決方案,圍繞現(xiàn)有框架進(jìn)行設(shè)計(jì),提出了基于MVC分層架構(gòu)具備可視化流程編排、萬能工具倉庫以及自動(dòng)化作業(yè)管理等核心功能的框架設(shè)計(jì)。目的在于減少運(yùn)維、交付人員的工作量,使系統(tǒng)得以快速上線,從而提高分布式系統(tǒng)交付效率。
基于該平臺(tái)可以有效地完成分布式系統(tǒng)部署交付,通過維護(hù)定制化流程模板,在系統(tǒng)部署時(shí),不需要對(duì)每臺(tái)分布式子系統(tǒng)進(jìn)行——手動(dòng)部署,而是按照預(yù)先編排好的流程進(jìn)行自動(dòng)部署,并加快系統(tǒng)上線時(shí)間,降低系統(tǒng)風(fēng)險(xiǎn)。各企業(yè)用戶通過使用該平臺(tái),可以大大節(jié)省部署資源和人員投資,在研發(fā)過程中快速地組織系統(tǒng)的分布式部署。后續(xù)我們將持續(xù)完善提供更加通用便捷的分布式系統(tǒng)運(yùn)維交付解決方案,從部署方式入手,實(shí)現(xiàn)各平臺(tái)兼容的搭建方案,如物理機(jī)部署、虛擬機(jī)部署、容器部署等等,這將是我們今后研究的方向。
[1]王曉鵬.大型分布式系統(tǒng)服務(wù)對(duì)象部署與運(yùn)行監(jiān)控技術(shù)的研究與實(shí)踐[D].長沙:國防科技大學(xué),2006.
[2]燕振斌.分布式環(huán)境下程序部署與監(jiān)控系統(tǒng)中的任務(wù)調(diào)度模型研究[D].北京:北京工業(yè)大學(xué),2013.
[3]李新虎,劉正偉,劉俊朋.基于puppet工具的軟件批量部署的實(shí)現(xiàn)[J].信息技術(shù)與標(biāo)準(zhǔn)化,2014(6):70-75.
[4]李小文.基于Puppet的自動(dòng)化部署工具的設(shè)計(jì)與實(shí)現(xiàn)[J].軟件,2015,36(12):224-227.
[5]陳興振.基于Hadoop的數(shù)據(jù)作業(yè)管理平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國科學(xué)院大學(xué),2015.
[6]郭學(xué)英,余國誠,姜穎.一體化環(huán)境下部署數(shù)據(jù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].中國民航大學(xué)學(xué)報(bào),2014,32(4):31-35.
[7]徐瑞雪.基于JAVA/XML的分布式數(shù)據(jù)同步系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[D].大連:大連海事大學(xué),2011.
Research on andApplication of Distributed System Operation and Maintenance Delivery Solution
Cao YuweiZhang Yi
(China Mobile(Shenzhen)Limited,Shenzhen 518048,Guangdong)
With the rapid development of cloud computing and big data technology,SOA and micro service distributed software architecture model have become the basic architecture model of business systems.Compared with the traditional non-distributed systems,distributed systems are gradually favored by the industry because of their advantages of easy expansion,high reliability,fast processing speed,and high flexibility.This paper puts forward more effective solutions of distributed deployment system.Based on the existing frame,the solution has core functions of visual process orchestration,universal tool warehouse and automated management with MVC layered architecture.
distributed system;tool warehouse;visual process orchestration;automated management;MVC layered architecture
TN929.5
A
1008-6609(2017)10-0044-04
曹雨薇(1990-),女,湖南人,碩士,系統(tǒng)架構(gòu)分析工程師,研究方向?yàn)橐苿?dòng)第三代業(yè)務(wù)支撐系統(tǒng)架構(gòu)。