黃煒耀
【摘要】 本文主要對分布式應(yīng)用系統(tǒng)的版本更新進(jìn)行研究分析。首先通過傳統(tǒng)應(yīng)用系統(tǒng)與分布式應(yīng)用系統(tǒng)版本控制與更新的特點進(jìn)行分析比較,并從中提出分布式應(yīng)用系統(tǒng)更新需要面對與解決的問題,最后給出具體的方案與較詳細(xì)的設(shè)計思路進(jìn)行分析。
【關(guān)鍵詞】 分布式 HDFS 版本控制 版本更新
一、引言
隨著移動互聯(lián)網(wǎng)的快速發(fā)展,分布式這個概念越來越被大家所熟悉,分布式相關(guān)技術(shù)也被廣泛地應(yīng)用于我們的系統(tǒng)中。而大型的分布式應(yīng)用系統(tǒng)通常由幾十到幾百甚至幾千臺PC服務(wù)器組成,在實際的運維過程中,我們不得不面對如此多的應(yīng)用主機(jī)上程序版本控制與更新的問題。
二、版本更新實現(xiàn)方案
2.1分布式應(yīng)用系統(tǒng)版本更新特點
傳統(tǒng)集中式應(yīng)用系統(tǒng)一般由少量幾臺應(yīng)用主機(jī)組成,其版本更新可通過人為方式一對一地進(jìn)行升級實現(xiàn)。而分布式應(yīng)用系統(tǒng)一般由大量的應(yīng)用主機(jī)組成,此時版本發(fā)布,如果再按傳統(tǒng)的方式處理,不僅需要投入大量的人力,而且發(fā)布的效果也很難得到保證。因此,在版本發(fā)布過程中我們需要減少人為干預(yù)與投入的時間、分布式各應(yīng)用主機(jī)能夠?qū)崿F(xiàn)版本自動升級,并且各應(yīng)用主機(jī)更新結(jié)果可跟蹤。
2.2方案實現(xiàn)
通過以上對分布式應(yīng)用系統(tǒng)版本更新的特點進(jìn)行分析,本文給出一種版本自動更新的方案,總的架構(gòu)圖如下:
以上方案由發(fā)布主機(jī)、HDFS、應(yīng)用集群節(jié)點三大環(huán)節(jié)組成。方案中各環(huán)節(jié)負(fù)責(zé)的功能如下:
發(fā)布主機(jī)
對應(yīng)用系統(tǒng)版本進(jìn)行管理,包含版本發(fā)布、版本回退以及對各應(yīng)用節(jié)點版本更新情況進(jìn)行跟蹤。發(fā)布過程中首先對當(dāng)前集群版本進(jìn)行備份,然后將版本增量發(fā)布至對應(yīng)的HDFS目錄,最后在HDFS版本庫中對更新的文件進(jìn)行版本號升級。此過程需要保證版本發(fā)布的“事務(wù)一致性”,即一個版本更新包涉及的文件發(fā)布,需要保證都成功或失敗時進(jìn)行發(fā)布回滾操作,以減少對業(yè)務(wù)系統(tǒng)的影響。
HDFS
存放應(yīng)用系統(tǒng)文件對應(yīng)的版本號信息、應(yīng)用系統(tǒng)文件備份庫、應(yīng)用系統(tǒng)文件在用庫。其中備份庫可用于版本回退,在用庫用于節(jié)點實時更新的數(shù)據(jù)源。為了保證每次更新文件版本號的唯一性,版本號值等于文件內(nèi)容MD5算法的結(jié)果值。這里選用HDFS做為版本更新的中轉(zhuǎn)環(huán)節(jié),能保證數(shù)據(jù)的安全與高可用性。
應(yīng)用集群節(jié)點
負(fù)責(zé)本節(jié)點版本更新以及更新結(jié)果的反饋。應(yīng)用節(jié)點保留本地版本庫以及當(dāng)前最新的版本文件,其與HDFS上保持一致。每個應(yīng)用節(jié)點上都部署有更新線程,定時對遠(yuǎn)程版本庫及本地版本庫進(jìn)行比對分析,當(dāng)存在不一致的文件時,首先一次性將不一致的文件下載至本地臨時目錄,待所有文件都下載完畢后,再移至正式目錄進(jìn)行覆蓋,最后修改本地版本庫信息。在更新本地文件時,可根據(jù)系統(tǒng)自身的需要增加額外的功能如:java類的重載、緩存數(shù)據(jù)的更新等。
三、結(jié)束語
本文首先對分布式應(yīng)用系統(tǒng)版本更新的特點進(jìn)行分析,并與傳統(tǒng)應(yīng)用系統(tǒng)的版本升級進(jìn)行對比,并從中得出分布式應(yīng)用系統(tǒng)版本更新過程中需要面對與解決的問題。緊接著對遇到的問題制定出解決方案,并做了詳細(xì)的設(shè)計分析。本方案實現(xiàn)邏輯簡單并自主實現(xiàn),其相對于其它的開源軟件如:puppet等,更容易撐控。借助以上分布式應(yīng)用系統(tǒng)版本更新的設(shè)計思路,不同的應(yīng)用系統(tǒng)可根據(jù)需要在相應(yīng)的環(huán)節(jié)增加功能,最終制定出符合自身系統(tǒng)需要的版本更新流程,可大大減少人工投入與降低人為發(fā)布的風(fēng)險。
參 考 文 獻(xiàn)
[1] Tom White.《Hadoop權(quán)威指南》
[2] Hadoop http://hadoop.apache.org/
[3] Git版本更新控制 http://www.open-open.com/lib/view/open1328069609436.html
[4] George Coulouris等.《分布式系統(tǒng)概念與設(shè)計》
[5]Tanenbaum.《分布式系統(tǒng)原理與范型(第2版)》