單點系統架構可用性與效能優化

2022-07-21 05:42:11 字數 2372 閱讀 7521

單點master的設計會大大簡化系統設計,何況有時候避免不了單點。

先看乙個典型網際網路高可用架構:

(2)負載均衡層:nginx是整個服務端的入口,負責反向**與負責均衡工作;

(3)站點層:web-server層,典型的是tomcat或apache;

(4)服務層:service層,典型的是dubbo或thrift等提供rpc呼叫的後端服務;

(5)資料層:包含cache和db,典型的是主從複製讀寫分離的db架構。

在這個網際網路架構中,站點層、服務層、資料庫的從庫都可以通過冗餘的方式來保證高可用,但至少:

(1)nginx層是乙個潛在的單點

(2)資料庫寫庫master也是乙個潛在的單點

單點系統一般來說存在兩個很大的問題:

(1)非高可用:既然是單點,master一旦發生故障,服務就會收到影響;

(2)效能瓶頸:既然是單點,不具備良好的擴充套件性,服務效能總有乙個上線,這個單點的效能上限往往就是整個系統的效能上限。

shadow-master(影子master)是一種很常見的解決單點高可用問題的技術方案。

shadow-master:顧名思義,服務正常時,它只是單點master的乙個影子,在master出現故障時,shadow-master會自動變成master,繼續提供服務。

shadow-master它能夠解決高可用的問題,並且故障的轉移是自動的,不需要人工介入,但不足是它使服務資源的利用率降為50%,業內經常使用keepalived+vip的方式實現這類單點的高可用。

(1)client會連線正常的master,shadow-master不對外提供服務;

(2)master與shadow-master之間有一種存活探測機制;

(3)master與shadow-master有相同的虛ip(virtual-ip);

當發現master異常時:

shadow-master會自動頂上成為master,虛ip機制可以保證這個過程對呼叫方是透明的。

nginx與資料庫的主庫master可用類似的方式來保證高可用,只是細節上有些地方要注意。

傳統的一主多從,讀寫分離的db架構,只能保證讀庫的高可用,是無法保證寫庫的高可用的,要想保證寫庫的高可用,也可以使用上述的shadow-master機制。

(1)兩個主庫設定相互同步的雙主模式;

(2)平時只有乙個主庫提供服務,言下之意,shadow-master不會往master同步資料;

(3)異常時,虛ip漂移到另乙個主庫,shadow-master變成主庫繼續提供服務。

需要說明的是,由於資料庫的特殊性,資料同步需要時延,如果資料還沒有完成同步,流量就切到了shadow-master,可能引起小部分資料的不一致。

既然知道單點存在效能上限,單點的效能有可能成為系統的瓶頸,那麼,減少與單點的互動,便成了存在單點的系統優化的核心方向。

怎麼減少與單點的互動,提供兩個常見的方法:

批量寫是一種常見的提公升單點效能的方式。參考

客戶端快取也是一種降低與單點互動次數,提公升系統整體效能的方法。

無論怎麼批量寫,客戶端快取,單點畢竟是單機,還是有效能上限的。

想方設法水平擴充套件,消除系統單點,理論上才能夠無限的提公升系統效能。

以nginx為例,如果來進行水平擴充套件?

第一步的dns解析,只能返回乙個nginx外網ip麼?no,dns輪詢即時支援dns-server返回不同的nginx外網ip,這樣就能實現nginx負載均衡層的水平擴充套件。

dns-server部分,乙個網域名稱可以配置多個ip,每次dns解析請求,輪詢返回不同的ip,就能實現nginx的水平擴充套件,擴充套件負載均衡曾的整體效能。

資料庫單點寫庫也是同樣的道理,在資料量很大的情況下,可以通過水平拆分,來提公升寫入效能。

但是,並不是所有的業務場景都可以水平拆分。

(1)單點系統存在的問題:可用性問題,效能瓶頸問題;

(2)shadow-master是一種常見的解決單點系統可用性的問題的方案;

(3)減少與單點的互動,是存在單點的系統優化的核心方向,常見方法是:批量寫,客戶端快取;

(4)水平也是提公升單點系統性的好方案。

軟體體系架構 系統可用性

系統的可用性,即系統服務不中斷執行時間佔實際執行時間的比例。所以,可用性其實是乙個百分比,如99.9 根據iso 9241 11的定義,可用性是指在特定環境下,產品為特定使用者用於特定目的時所具有的 有效性 效率和主觀滿意度 我們通常會聽說乙個詞 高可用,其實指的就是高可用性。高可用指的就是系統服務...

軟體體系架構 系統可用性

系統的可用性,即系統服務不中斷執行時間佔實際執行時間的比例。所以,可用性其實是乙個百分比,如99.9 根據iso 9241 11的定義,可用性是指在特定環境下,產品為特定使用者用於特定目的時所具有的 有效性 效率和主觀滿意度 我們通常會聽說乙個詞 高可用,其實指的就是高可用性。高可用指的就是系統服務...

IT系統可用性

it系統可用性重新認識 今天看了一篇關於it系統可用性研究的文章,有些自己的想法,一併記載下來,若以後在此基礎上有新的發現,將及時更新。it系統可用性定義 what it系統中計算機軟硬體,網路等對使用者有效使用和令人滿意的程度。換句話說,盡量縮短因系統崩潰所導致的停機時間。包括確保機器的響應速度,...