絕對不要信任單點(diǎn)故障

2022-01-16    分類: 網(wǎng)站建設(shè)

絕對不要實(shí)現(xiàn)且一定要減少單點(diǎn)數(shù)障。在架構(gòu)圖上我出單點(diǎn)實(shí)例。盡量采用主動/主動配置。通過多個實(shí)景大化可用性。盡量采用主動/主動配置,不要用主動被動解決方案。利用均衡器均衡跨服務(wù)實(shí)例的流量。對于單例模式,使用主動/被動配置的控制。
在數(shù)學(xué)中,單元素集合是只有一個元素的集合,如{A}。在程序設(shè)計(jì)中,單例模式指的是一種設(shè)計(jì)模式,它模仿了數(shù)學(xué)概念,限制了一個類只能實(shí)例化一個對象。這種設(shè)計(jì)模式對協(xié)調(diào)資源非常有用,但程序員常為了省事而過度使用它,這個話題我們之后再討論。在系統(tǒng)架構(gòu)中,單例模式,或者更恰當(dāng)?shù)卣f是單例反模式,被稱為單點(diǎn)故障(SPOF)也就是說,當(dāng)系統(tǒng)中的某個組件只有一個實(shí)例時,一旦該實(shí)例出故障,就會造成系統(tǒng)范圍的影響。

SPOF在系統(tǒng)中隨處可見,從單個的Web服務(wù)器到單個的網(wǎng)絡(luò)設(shè)備,但系統(tǒng)中最常見的SPOF是數(shù)據(jù)庫。其原因在于數(shù)據(jù)庫是最難擴(kuò)展到多個節(jié)點(diǎn)上的,因此它只有一個實(shí)例。在圖9-1中,即使登錄、搜索和結(jié)賬服務(wù)器都有冗余,數(shù)據(jù)庫仍是SPOF。更精的是,所有服務(wù)池都依賴于這一個數(shù)據(jù)庫。雖然任何SPOF都不好,但數(shù)據(jù)庫SPOF的問題更大,如果數(shù)據(jù)庫速度下降或者期讀了,那么對數(shù)據(jù)庫進(jìn)行同步調(diào)用的所有服務(wù)池都將受到這一事件影響。
我們常說給客戶的一句口頭禪是“一切都會出故障”。這句話適用于服務(wù)器、存儲系統(tǒng)、網(wǎng)絡(luò)設(shè)備和數(shù)據(jù)中心。只要你知道的,都會出故障。
雖然很多人認(rèn)為數(shù)據(jù)中心是不會出故障的,但多年來,我們自己經(jīng)歷了十幾次數(shù)據(jù)中心運(yùn)行中斷。高可用的存儲區(qū)域網(wǎng)絡(luò)也是如此,雖然它們比舊的SCSI硬盤陣列可靠得多,但仍舊會出故障。
大多數(shù)解決SPOF的方法是申請另一臺硬件,如X軸擴(kuò)展所示的通過克隆服務(wù),讓每種服務(wù)都有兩個或更多個實(shí)例在運(yùn)行。遺憾的是,事實(shí)并非總是如此簡單。讓我們回頭再看看編寫單例模式的步驟。雖然不是所有的單例類都不允許在多臺服務(wù)器上運(yùn)行一個服務(wù),但有些實(shí)現(xiàn)絕對會讓你免于遭受可怕的后果。較簡單的情況是,如果代碼中有一個類,用于從用戶賬戶中減去基金,用單例模式實(shí)現(xiàn)它就會讓用戶的余額免于不測,如成為負(fù)數(shù)。如果把這段代碼放在兩臺獨(dú)立的服務(wù)器上,沒有額外的控制措施或聯(lián)絡(luò)信號,則很可能會造成兩個事務(wù)同時在用戶賬戶中記人借額,從而導(dǎo)致錯誤或不想發(fā)生的狀況。對于這種情況,我們需要修復(fù)代碼,或者依賴外部控制來預(yù)防。但最令人滿滿意的解決方案是修復(fù)代碼,在多個主機(jī)上實(shí)現(xiàn)服務(wù),通常我們需要快速修復(fù)SPOF。作為本原則的最后一個要點(diǎn),我們接下來將討論幾個快速修復(fù)方法。
第一個方法最簡單,是使用主動/被動配置。一個服務(wù)在一臺服務(wù)器上主動運(yùn)行,在另外一臺服務(wù)器上被動運(yùn)行(不接收流量)。這種熱/冷配置,常被用作刪除數(shù)據(jù)庫SPOF的第一步。接下來的方法是用系統(tǒng)中的另一個組件控制數(shù)據(jù)訪問。如果SPOF是服務(wù),那么用數(shù)據(jù)庫鎖可以控制數(shù)據(jù)的訪問。如果SPOF是數(shù)據(jù)庫,那么可以設(shè)置主一從配置,由應(yīng)用控制數(shù)據(jù)訪問,寫更新操作由主數(shù)據(jù)庫完成,讀選擇操作由從數(shù)據(jù)庫完成。最后一個用于修復(fù)SPOF的配置是負(fù)載均衡器。如果Web服務(wù)器或應(yīng)用服務(wù)器的一個服務(wù)是SPOF,且在代碼中不能消除,那么可以利用負(fù)載均衡器把一個用戶的請求只發(fā)送給池中的一臺服務(wù)器。這是通過會話cookie實(shí)現(xiàn)的,即設(shè)置用戶的瀏覽器,且允許負(fù)載均衡器每次都把該用戶的請求重定向到同一個Web或應(yīng)用服務(wù)器,從而形成一種一致狀態(tài)。
我們介紹了幾種消除SPOF的方法,在不能及時修改代碼的情況下可以輕松地實(shí)現(xiàn)它們。但是最后的方法最好,即修復(fù)代碼,允許網(wǎng)站設(shè)計(jì)服務(wù)的多個實(shí)例在不同的物理服務(wù)器上運(yùn)行,從而盡可能消除SPOF。記住,“一切都會出故障”,所以當(dāng)SPOF出故障時,請不要吃驚。

當(dāng)前名稱:絕對不要信任單點(diǎn)故障
網(wǎng)頁鏈接:http://www.muchs.cn/news9/142959.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、自適應(yīng)網(wǎng)站做網(wǎng)站、網(wǎng)頁設(shè)計(jì)公司、服務(wù)器托管、網(wǎng)站導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)