刁海洋
摘 要:隨著計算機的發(fā)展和大數(shù)據(jù)的應用進步,分布式系統(tǒng)被廣泛部署到生活和工作中的各個方面,在保證數(shù)據(jù)安全存儲的前提之下,系統(tǒng)穩(wěn)定可靠的運行、對外提供的一致性服務也成了人們重點關(guān)注的屬性要求。而在種類繁多的軟件系統(tǒng)中,安全類軟件是對數(shù)據(jù)一致性要求較高的應用軟件系統(tǒng)。一致性協(xié)議的出現(xiàn)有效地解決了分布式環(huán)境下數(shù)據(jù)的一致問題,并保證了系統(tǒng)的穩(wěn)定運行,提高了系統(tǒng)對外服務的效率。文章就一致性協(xié)議在分布式安全系統(tǒng)中的應用展開闡述。
關(guān)鍵詞:一致性協(xié)議;分布式;安全系統(tǒng)
0 引言
分布式安全系統(tǒng)不僅關(guān)系著個人的信息安全,對銀行、企業(yè)、政府的安全都有著非常重要的影響。如何保證分布式安全系統(tǒng)的穩(wěn)定可靠運行、數(shù)據(jù)的安全存儲、對外提供服務的冪等性,在近幾年的研究中極為受關(guān)注。要處理好系統(tǒng)的可靠性問題,與分布式技術(shù)密不可分。而分布式環(huán)境下的數(shù)據(jù)如何保證一致性又是不得不解決的一大難點。因此,一致性協(xié)議的出現(xiàn)對于解決分布式安全系統(tǒng)中的關(guān)鍵問題有著非常重的意義。
1 分布式安全系統(tǒng)問題
分布式安全系統(tǒng)問題通常涉及多個方面,但其核心問題是分布式環(huán)境下的數(shù)據(jù)一致性問題和安全系統(tǒng)所要求的穩(wěn)定性及對外服務一致性問題[1]。
1.1? 數(shù)據(jù)一致性問題
大數(shù)據(jù)時代的來臨,使得數(shù)據(jù)的存儲成為瓶頸。此時分布式技術(shù)應運而生,將數(shù)據(jù)分片分散存儲,利用多臺計算機并行存儲來分擔單個主機的磁盤I/O。在大集群下,可以使用成千上萬臺計算機來存儲關(guān)鍵數(shù)據(jù),統(tǒng)一對外提供服務。在上層網(wǎng)關(guān)處,應用性能良好的負載均衡算法,將對數(shù)據(jù)的請求合理地分配給每一臺主機[2]。為了保證集群下的每臺計算機數(shù)據(jù)不丟失,需要結(jié)合副本的技術(shù),將數(shù)據(jù)同時寫入多個副本來避免單點故障。多副本同步要求響應寫入請求還是異步響應寫入請求,抑或是不響應寫入請求,會在系統(tǒng)的層面產(chǎn)生不同的一致性問題[3]。
1.2? 穩(wěn)定性問題
安全類系統(tǒng)對于系統(tǒng)的穩(wěn)定運行有著非常高的要求,該類系統(tǒng)在實際運行過程中出現(xiàn)的任何宕機行為都有可能引起非常嚴重的后果。數(shù)據(jù)被盜取、異常流量輸入、數(shù)據(jù)流動異常等關(guān)鍵指標都有可能影響著企業(yè)、銀行、政府的正常運作。因此該類系統(tǒng)必然要求非單點部署,數(shù)據(jù)和服務的多重備份。
1.3? 對外服務一致性問題
安全類系統(tǒng)的數(shù)據(jù)和服務輸出對于上層決策、實時監(jiān)控、異常處理的意義非常重大。關(guān)鍵指標的一致響應為這些服務提供了便利,同時也決定著這些服務的準確性和統(tǒng)一性。因此安全系統(tǒng)要求任何接入客戶端檢索的數(shù)據(jù)都是實時一致的,不存在同一時間同一類型服務請求返回不同的檢索數(shù)據(jù)。
2 一致性協(xié)議的起源
在分布式環(huán)境下,如何保障數(shù)據(jù)的一致性是急需解決的問題。為了解決此問題,業(yè)界提出了多種理論模型,其中廣為人知的是CAP理論,而在此理論基礎之上誕生了多種一致性協(xié)議,主要分為強一致性協(xié)議和弱一致性協(xié)議[4]。
2.1? CAP理論
在一個分布式系統(tǒng)中是不可能同時滿足一致性(C)、可用性(A)和分區(qū)容錯性(P)這三個要求,最多只能同時滿足其中兩個。一致性是指數(shù)據(jù)在多個副本之間能否保證一致的特性;可用性是指系統(tǒng)提供的服務需要一直處于可用的狀態(tài);分區(qū)容錯性是指在遇到任何網(wǎng)絡分區(qū)故障情況下仍然能夠?qū)ν馓峁┓盏奶匦?。廣義上來說,一致性和可用性是無法都滿足的,為了保證一致性,分布式系統(tǒng)必然需要在全部節(jié)點上進行類似于加鎖的操作,而加鎖的操作意味著系統(tǒng)在這段時間范圍內(nèi)是無法對外提供服務的,系統(tǒng)處于等待狀態(tài)。如果要保證可用性,即分布式系統(tǒng)時刻都處于對外提供正常服務的狀態(tài),則意味著不能在全局意義上執(zhí)行加鎖的操作,自然也就無法保證系統(tǒng)處于一致性的狀態(tài),必然在某個時刻,系統(tǒng)的各個節(jié)點上的數(shù)據(jù)出現(xiàn)不一致。分區(qū)容錯性則是分布式環(huán)境下必須要滿足的特性,這種特性保證了分布式系統(tǒng)的正常運行,如果放棄分區(qū)容錯性那么整個分布式環(huán)境都將處于宕機的狀態(tài)。因此在分布式系統(tǒng)中,只能在一致性和可用性二者之間選擇一項,于是誕生了強可用性分布式系統(tǒng)和強一致性分布式系統(tǒng)。
2.2? 強一致性協(xié)議
強一致性協(xié)議也稱為原子一致性、線性一致性,要求系統(tǒng)任何一次讀取請求都能夠讀到最近一次寫入到系統(tǒng)的數(shù)據(jù),并且系統(tǒng)的所有進程看到的操作順序都是全局一致的。在這種條件的限制之下,意味著在分布式系統(tǒng)的層面加上了全局鎖,任何讀取或者寫入的操作都是按順序加入到系統(tǒng)隊列中,先進隊列的先處理,后進隊列的后處理,通過這種方式來保障所有對系統(tǒng)操作的順序一致。
2.3? 弱一致性協(xié)議
數(shù)據(jù)更新后,如果能夠容忍后續(xù)的訪問只能訪問部分數(shù)據(jù)則是弱一致性。其約束了系統(tǒng)在寫入成功后,不承諾馬上可以讀到寫入的內(nèi)容,也不承諾多久之后可以達到數(shù)據(jù)的一致,但是會盡快地使數(shù)據(jù)達到一致性狀態(tài)。在這種條件的限制之下,客戶端訪問的數(shù)據(jù)可能存在不一致性,即相同的檢索請求在數(shù)據(jù)寫入后執(zhí)行會出現(xiàn)檢索結(jié)果不一樣的情況,而且系統(tǒng)無法告知客戶端在什么時間能夠?qū)?shù)據(jù)統(tǒng)一。
在弱一致性協(xié)議類型中,存在一種特殊的情況,即最終一致性協(xié)議。這種協(xié)議保證系統(tǒng)在一定時間內(nèi),能夠達到數(shù)據(jù)的一致性狀態(tài)。標準的弱一致性協(xié)議中,分布式系統(tǒng)是無法給出確切的能夠?qū)?shù)據(jù)統(tǒng)一的時間,數(shù)據(jù)可能在瞬間就保持統(tǒng)一,也有可能一直是不一致的狀態(tài)。那么在這種情況下誕生了最終一致性協(xié)議,也就是在系統(tǒng)中設置一個閾值,在該閾值范圍內(nèi),分布式系統(tǒng)一定會保證數(shù)據(jù)一致性。
3 分布式安全系統(tǒng)的應用策略
將一致性協(xié)議應用到分布式安全系統(tǒng)之中,可以處理分布式環(huán)境下的數(shù)據(jù)一致性問題、安全系統(tǒng)中的穩(wěn)定性和對外提供服務的一致性問題,同時提高系統(tǒng)的抗壓能力和系統(tǒng)對外提供服務的能力和效率。
在對外提供服務的前提要求下,只有強一致性協(xié)議符合要求。因此在該類協(xié)議中選擇性能高、穩(wěn)定性強的Raft協(xié)議作為分布式安全系統(tǒng)的一致性協(xié)議[5]。Raft協(xié)議將一致性問題分為兩個子問題:主節(jié)點選舉和狀態(tài)復制[6]。其中,主節(jié)點選舉是利用絕大多數(shù)子節(jié)點響應即系統(tǒng)完成響應的特性來實現(xiàn)的,保證了系統(tǒng)中絕大多數(shù)主機可用的情況下整個系統(tǒng)可用,從而提高了整個系統(tǒng)的穩(wěn)定性和可靠性;狀態(tài)復制則是主節(jié)點在完成客戶端事務請求后將狀態(tài)同步到子節(jié)點,保證系統(tǒng)數(shù)據(jù)的一致性;系統(tǒng)對外提供服務時,僅主節(jié)點能夠接受請求,其他節(jié)點接受請求后都需要轉(zhuǎn)發(fā)給主節(jié)點。通過這些協(xié)議限制和要求,在保證一致性的前提下,提高了系統(tǒng)的穩(wěn)定性和性能。
3.1 分布式節(jié)點異?;謴?/p>
當分布式系統(tǒng)中節(jié)點因為各種異常宕機后重啟,一致性協(xié)議需要能夠恢復該節(jié)點的服務,將該節(jié)點的事務日志狀態(tài)同步到與主節(jié)點一致。該協(xié)議使用日志狀態(tài)同步的機制來保證異常節(jié)點的正?;謴汀O到y(tǒng)在正常運作過程中,從節(jié)點和主節(jié)點通過心跳連接的機制同步主節(jié)點的本地事務日志,心跳連接是主從節(jié)點在線的保證機制,每隔一段時間會由主節(jié)點自動向從節(jié)點發(fā)送請求,該請求會帶上日志操作等關(guān)鍵信息[7]。而當節(jié)點從異常狀態(tài)中恢復之后,第一件事就是從主節(jié)點同步最新的事務,使得自身狀態(tài)及時跟上。
3.2? 系統(tǒng)順序全局一致
分布式系統(tǒng)各個事務狀態(tài)是獨立的,若要保證系統(tǒng)全局的順序一致,那么需要在系統(tǒng)級別加鎖,即控制整個系統(tǒng)的讀取和寫入的順序。一致性協(xié)議通過主節(jié)點來協(xié)調(diào)各個事務操作來保證全局一致,連接到分布式系統(tǒng)的各個客戶端發(fā)送的任何請求都需要轉(zhuǎn)發(fā)到主節(jié)點來執(zhí)行實際的操作,由主節(jié)點控制事務的發(fā)起和事務的提交,并在完成之后將結(jié)果返回給客戶端。結(jié)果返回之后,再將主節(jié)點本地的事務日志同步到各個從節(jié)點。這點有區(qū)別于其他協(xié)議,有的協(xié)議中主節(jié)點只負責寫入請求,從節(jié)點只負責讀取請求,這種協(xié)議會造成讀取的數(shù)據(jù)不一致問題。
3.3? 網(wǎng)絡分區(qū)的處理
眾所周知,在不穩(wěn)定的網(wǎng)絡環(huán)境下,分布式環(huán)境會出現(xiàn)分區(qū)的問題,比如機房和機房之間的通信。在網(wǎng)絡分區(qū)的情況下,一致性協(xié)議通過大多數(shù)節(jié)點響應的機制來處理分布式請求。在網(wǎng)絡分區(qū)之后,必然會出現(xiàn)一個包含大多數(shù)節(jié)點的子網(wǎng)絡,該子網(wǎng)絡能夠正常對外提供服務,同步事務日志等。而只有少數(shù)節(jié)點的子網(wǎng)絡則一直處于等待狀態(tài),雖然該子網(wǎng)絡仍然能夠接收到到客戶端發(fā)送過來的請求,但這些請求是無法提交到本地事務日志中,并且也無法正常返回給客戶端,即該子網(wǎng)絡中的任何操作都是非接受的。當網(wǎng)絡分區(qū)從異常狀態(tài)恢復時,包含大多數(shù)節(jié)點的子網(wǎng)絡會由主節(jié)點將本地已提交的事務日志同步到包含少數(shù)節(jié)點的子網(wǎng)絡中,使得子網(wǎng)絡中的節(jié)點數(shù)據(jù)也保持全局統(tǒng)一[8]。一致性協(xié)議通過這種方式來解決網(wǎng)絡分區(qū)的問題,并確保分區(qū)恢復之后整個分布式系統(tǒng)的數(shù)據(jù)一致,能夠正常對外提供服務。
4 結(jié)語
隨著分布式技術(shù)的不斷推進和演化,分布式安全系統(tǒng)開始受到越來越多人的關(guān)注。對于如何保證分布式安全系統(tǒng)的穩(wěn)定運行和分布式數(shù)據(jù)的一致性進行了大量的研究和分析。研究表明將Raft一致性協(xié)議應用到分布式安全系統(tǒng)中,能夠有效地提高系統(tǒng)的運行效率,保證數(shù)據(jù)的一致性,為用戶提供一個安全穩(wěn)定的使用環(huán)境。大數(shù)據(jù)時代下,分布式技術(shù)已然成為應用趨勢,而在分布式技術(shù)之下,一致性協(xié)議發(fā)揮著重大的作用。
[參考文獻]
[1]閆蒞.網(wǎng)絡安全環(huán)境下計算機軟件的開發(fā)及利用分析[J].信息記錄材料,2020(4):45-46.
[2]劉文君.大數(shù)據(jù)背景下的計算機網(wǎng)絡信息安全及防護措施探析[J].信息通信,2020(7):160-162.
[3]張麗.基于大數(shù)據(jù)時代下的計算機網(wǎng)絡信息安全與防護對策分析[J].數(shù)字通信世界,2020(5):34-35.
[4]王斌.智能電網(wǎng)信息安全面臨的挑戰(zhàn)與應對實踐[J].中國信息化,2019(12):69-70.
[5]李理.淺談網(wǎng)絡安全分析中的大數(shù)據(jù)技術(shù)應用[J].通訊世界,2018(1):147.
[6]陳陸,黃樹成,徐克輝.改進的Raft一致性算法及其研究[J].江蘇科技大學學報(自然科學版),2018(4):559-563.
[7]龍慧,樊曉平,劉少強.多智能體系統(tǒng)分布式一致性算法研究現(xiàn)狀[J].計算機工程與應用,2013(1):36-42.
[8]王志瑞,王幕天,劉正濤,等.分布式一致性算法的研究及應用[J]. 計算機時代,2015(12):13-17..
(編輯 姚 鑫)