1、也談談高可用
「高可用性」(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
2、高可用設計方案目標定義:服務器
系統穩定性是高可用的根本目的,通俗的說,系統能持續可用,不會無端宕機,在高壓下仍然能正常工做。session
從實際工程的角度看,不出故障的服務是不存在的,因此出了故障要可以快速發現和定位,在外部用戶發現前,經過報警機制,能準肯定位故障緣由,幫助工程師儘快處理問題,防止進一步影響業務。 架構
業務能夠經過以上三個方面創建負載均衡
3、架構設計的原則:
(1)無狀態設計
① 無狀態服務(stateless service)對單次請求的處理,不依賴其餘請求,也就是說,處理一次請求所需的所有信息,要麼都包含在這個請求裏,要麼能夠從外部獲取到(好比說數據庫),服務器自己不存儲任何信息。若是還有其餘信息須要存儲,能夠將信息放在一個單獨可共享的地方,獨立於server存在,好比,一樣仍是採起session的方式,在服務端保存數據,減小每次client請求傳輸的數據量(節省流量);可是將session集中存放,好比放在單獨的session層裏。
這種狀況下,server一樣是無狀態的,能夠作水平擴展。若是server是無狀態的,那麼對於客戶端來講,就能夠將請求發送到任意一臺server上,而後就能夠經過負載均衡等手段,實現水平擴展。
② 若是server是有狀態的,那麼就沒法很容易地實現了,由於客戶端須要始終把請求發到同一臺server才行,所謂「session遷移」等方案,也就是爲了解決這個問題。
③將有狀態服務轉換成無狀態服務,無狀態服務是相對隔離和平等的,當某臺服務器出錯,經過負載均衡策略會將流量划走到其餘無狀態服務器上。
一樣仍是採起session的方式,在服務端保存數據,減小每次client請求傳輸的數據量(節省流量);可是將session集中存放,好比放在單獨的session層裏。這種狀況下,server一樣是無狀態的,能夠作水平擴展,以下圖:less
(2)冗餘設計
無狀態服務故障轉移過程當中,須要服務作成冗餘設計才能實現。ide
幾個概念: ①SOA(Service-Oriented Architecture),SOA解決多服務凌亂問題,SOA架構解決數據服務的複雜程度,同時SOA又有一個名字,叫作服務治理。 ②微服務架構:其實和 SOA 架構相似,微服務是在 SOA 上作的昇華,微服務架構強調的一個重點是「業務須要完全的組件化和服務化」,原有的單個業務系統會拆分爲多個能夠獨立開發、設計、運行的小應用。這些小應用之間經過服務完成交互和集成。 ③SLA:服務等級協議(簡稱:SLA,全稱:service level agreement)。是在必定開銷下爲保障服務的性能和可用性,服務提供商與用戶間定義的一種雙方承認的協定。