一、也談談高可用

“高可用性”(High Availability)簡稱HA,通常來描述一個系統經過專門的設計,從而減少停工時間,而保持其服務的高度可用性。通俗來講就是通過專業的設計保障系統相關服務能夠不間斷的穩定運行。

度量方式:

%availability=(Total Elapsed Time-Sum of Inoperative Times)/ Total Elapsed Time 可用性和系統組件的失敗率相關。衡量系統設備失敗率的一個指標是“失敗間隔平均時間”MTBF(mean time between failures)。通常這個指標衡量系統的組件,如磁盤:

MTBF=Total Operating Time / Total No. of Failures

二、高可用設計方案目標定義:保持業務高穩定性

系統穩定性是高可用的根本目的,通俗的說,系統能持續可用,不會無故宕機,在高壓下仍然能正常工作。支持故障的快速定位(建立分層監控)

從實際工程的角度看,不出故障的服務是不存在的,所以出了故障要能夠快速發現和定位,在外部用戶發現前,通過報警機制,能準確定位故障原因,幫助工程師盡快處理問題,防止進一步影響業務。支持業務的快速恢復

業務可以通過以上三個方面建立

三、架構設計的原則:

(1)無狀態設計

系統架構高可用系統設計原則01 科技 第1張

① 無狀態服務(stateless service)對單次請求的處理,不依賴其他請求,也就是說,處理一次請求所需的全部信息,要麼都包含在這個請求裏,要麼可以從外部獲取到(比如說數據庫),服務器本身不存儲任何信息。如果還有其他信息需要存儲,可以將信息放在一個單獨可共享的地方,獨立於server存在,比如,同樣還是採取session的方式,在服務端保存數據,減少每次client請求傳輸的數據量(節省流量);但是將session集中存放,比如放在單獨的session層裏。

這種情況下,server同樣是無狀態的,可以做水平擴展。如果server是無狀態的,那麼對於客戶端來說,就可以將請求發送到任意一臺server上,然後就可以通過負載均衡等手段,實現水平擴展。

② 如果server是有狀態的,那麼就無法很容易地實現了,因為客戶端需要始終把請求發到同一臺server纔行,所謂“session遷移”等方案,也就是為瞭解決這個問題。

③將有狀態服務轉換成無狀態服務,無狀態服務是相對隔離和平等的,當某臺服務器出錯,通過負載均衡策略會將流量劃走到其他無狀態服務器上。

同樣還是採取session的方式,在服務端保存數據,減少每次client請求傳輸的數據量(節省流量);但是將session集中存放,比如放在單獨的session層裏。這種情況下,server同樣是無狀態的,可以做水平擴展,如下圖:

系統架構高可用系統設計原則01 科技 第2張

(2)冗餘設計

無狀態服務故障轉移過程中,需要服務做成冗餘設計才能實現。 幾個概念:

①SOA(Service-Oriented Architecture),SOA解決多服務凌亂問題,SOA架構解決數據服務的復雜程度,同時SOA又有一個名字,叫做服務治理。

②微服務架構:其實和 SOA 架構類似,微服務是在 SOA 上做的升華,微服務架構強調的一個重點是“業務需要徹底的組件化和服務化”,原有的單個業務系統會拆分為多個可以獨立開發、設計、運行的小應用。這些小應用之間通過服務完成交互和集成。

③SLA:服務等級協議(簡稱:SLA,全稱:service level agreement)。是在一定開銷下為保障服務的性能和可用性,服務提供商與用戶間定義的一種雙方認可的協定。

博客作者daydaydream的原創作品,如需轉載,請註明出處,否則將追究法律責任

轉載地址:https://blog.51cto.com/13238147/2362332

相關文章