以worker為中心的服務(wù)器時(shí)間獲取方案
本文將以以worker為中心的服務(wù)器時(shí)間獲取方案為主題,分為四個(gè)方面進(jìn)行詳細(xì)闡述。首先,簡(jiǎn)要介紹時(shí)間同步的背景及意義,其次,探討以worker為中心的時(shí)間同步架構(gòu)設(shè)計(jì),然后,分析時(shí)間同步中的錯(cuò)誤和漂移問題,最后,總結(jié)并歸納本文內(nèi)容。
1、時(shí)間同步的背景及意義
時(shí)間同步是指在分布式系統(tǒng)中各計(jì)算機(jī)節(jié)點(diǎn)之間保持精確的時(shí)間基準(zhǔn),保證節(jié)點(diǎn)間按照同一時(shí)間進(jìn)行事件處理。時(shí)間同步對(duì)于計(jì)算機(jī)網(wǎng)絡(luò)各方面的應(yīng)用都有著至關(guān)重要的影響,比如金融交易系統(tǒng)、多媒體傳輸、計(jì)算機(jī)集群、分布式數(shù)據(jù)處理等。過去傳統(tǒng)的時(shí)間同步方式是主從式架構(gòu),即由一個(gè)穩(wěn)定的主機(jī)(Master)為所有從屬節(jié)點(diǎn)(Slave)提供時(shí)間同步服務(wù)。但是隨著當(dāng)前計(jì)算機(jī)網(wǎng)絡(luò)體系變得越來越復(fù)雜和龐大,主從式架構(gòu)存在領(lǐng)導(dǎo)節(jié)點(diǎn)單點(diǎn)故障、網(wǎng)絡(luò)時(shí)延長(zhǎng)等問題,不具備實(shí)際應(yīng)用的可行性。
因此,以worker為中心的時(shí)間同步架構(gòu)設(shè)計(jì)應(yīng)運(yùn)而生,以工作節(jié)點(diǎn)為中心,多節(jié)點(diǎn)互聯(lián),相互協(xié)作提供時(shí)間同步服務(wù),能夠更加高效地解決分布式系統(tǒng)中的時(shí)間同步問題。
2、以worker為中心的時(shí)間同步架構(gòu)設(shè)計(jì)
以worker為中心的時(shí)間同步架構(gòu)相對(duì)于主從式時(shí)間同步架構(gòu)具有更高的容錯(cuò)性和可伸縮性。以worker為中心的架構(gòu)設(shè)計(jì)需要考慮以下三個(gè)方面:
2.1、集中式信息發(fā)布
worker節(jié)點(diǎn)作為時(shí)間同步的中心樞紐,需要在整個(gè)網(wǎng)絡(luò)中進(jìn)行時(shí)鐘的同步管理,整合各個(gè)節(jié)點(diǎn)的時(shí)間信息。同時(shí),worker節(jié)點(diǎn)還需要將時(shí)鐘同步情況反饋給其他的worker節(jié)點(diǎn),以實(shí)現(xiàn)在多個(gè)節(jié)點(diǎn)間同步時(shí)間。集中式信息發(fā)布的主要優(yōu)點(diǎn)是信息的準(zhǔn)確性和實(shí)時(shí)性,同時(shí)追蹤信息變化較為輕松,缺點(diǎn)則是容易在瓶頸節(jié)點(diǎn)出現(xiàn)堵塞現(xiàn)象。
2.2、分布式數(shù)據(jù)管理
為降低一個(gè)工作節(jié)點(diǎn)失效對(duì)整個(gè)網(wǎng)絡(luò)造成的影響,以worker為中心的時(shí)間同步方案采用了分布式數(shù)據(jù)管理機(jī)制。也就是說,工作節(jié)點(diǎn)之間相互協(xié)作,通過相互交換數(shù)據(jù)實(shí)現(xiàn)時(shí)間同步服務(wù)。這種情況下,節(jié)點(diǎn)之間需要共同維護(hù)一個(gè)數(shù)據(jù)庫(kù),分布式管理技術(shù)可以保證在某個(gè)worker節(jié)點(diǎn)發(fā)生故障的情況下,整個(gè)網(wǎng)絡(luò)依然可以正常運(yùn)轉(zhuǎn)。
2.3、時(shí)鐘同步策略
時(shí)鐘同步策略是以worker為中心的時(shí)間同步方案中的關(guān)鍵問題。為了保證同步結(jié)果的準(zhǔn)確性和可靠性,需要選擇適當(dāng)?shù)耐讲呗?,以適應(yīng)不同的應(yīng)用場(chǎng)景。時(shí)鐘同步策略分為硬件實(shí)現(xiàn)和軟件實(shí)現(xiàn)兩種,硬件實(shí)現(xiàn)主要是通過使用GPS衛(wèi)星數(shù)據(jù)進(jìn)行時(shí)間同步,而軟件實(shí)現(xiàn)主要是通過網(wǎng)絡(luò)協(xié)議進(jìn)行時(shí)鐘同步。時(shí)鐘同步的實(shí)現(xiàn)需要考慮時(shí)鐘精度、同步周期、時(shí)間戳、時(shí)鐘漂移等多個(gè)因素。
3、時(shí)間同步中的錯(cuò)誤和漂移問題
在以worker為中心的時(shí)間同步方案中,由于機(jī)器性能、內(nèi)存限制、網(wǎng)絡(luò)延遲等原因,可能會(huì)造成時(shí)間誤差或者時(shí)間漂移的問題。這時(shí)需要進(jìn)行錯(cuò)誤和漂移的檢測(cè)和校正,主要有以下幾種方法:
3.1、時(shí)間戳比較
時(shí)間戳比較是最基礎(chǔ)的方法之一,節(jié)點(diǎn)獲取網(wǎng)絡(luò)上其他節(jié)點(diǎn)的時(shí)間戳后進(jìn)行比較,來檢測(cè)同步是否正確。如果節(jié)點(diǎn)N與節(jié)點(diǎn)M的比較誤差在T范圍內(nèi),則認(rèn)為N和M的時(shí)鐘差是T。但是,由于網(wǎng)絡(luò)延遲,時(shí)間誤差可能會(huì)超過T的值,引入誤差。
3.2、滑動(dòng)窗口
滑動(dòng)窗口技術(shù)可以有效地檢測(cè)服務(wù)器時(shí)間漂移問題。節(jié)點(diǎn)每隔一段時(shí)間就將自己的時(shí)間戳發(fā)送給工作節(jié)點(diǎn),工作節(jié)點(diǎn)接收后將時(shí)間信息加入記錄中。通過對(duì)時(shí)間戳序列的處理,可以檢測(cè)出時(shí)間漂移的情況。
3.3、平均值計(jì)算
平均值方法是指將多個(gè)節(jié)點(diǎn)時(shí)間戳的值加和,然后除以節(jié)點(diǎn)數(shù)得到平均值。通過比較每個(gè)節(jié)點(diǎn)的時(shí)間戳與平均值的差距,可以排查錯(cuò)誤或漂移問題。該方法需要保證各節(jié)點(diǎn)的時(shí)鐘誤差在可容忍的范圍內(nèi)。