JavaWeb開發設計(三)可用性方案設計

2021-09-07 09:43:14 字數 1173 閱讀 8034

可用性方面經驗不足,暫不做總結。

可以先看這篇文章 

簡單列一下要點:

1、常見高可用問題和解決措施

1)機器、機房故障。通過硬體冗餘、多機房互備解決。

2)bug或誤操作。通過提公升研發質量、測試質量、灰度發布等方式解決。

3)突發流量。通過壓測提供系統頂流量能力,外部攻擊需要做防犯,另外最好有熔斷機制。

4)容量不足。進行容量規劃、容量預警,可通過限流、降級等解決。

5)依賴服務故障。對於弱依賴降級解耦,對於強依賴切換到備用方案。

2、具體的高可用實現方案

1)擴充套件

擴充套件分為垂直擴充套件和水平擴充套件,垂直擴充套件是指同一邏輯單元內自擴充套件,擴充套件能力有限,如db垂直分庫分表;水平擴充套件則是通過增加多個邏輯單元,擴充套件能力強,會增加更多維護成本,如mysql的主從、應用伺服器集群。

2)隔離

隔離級別按粒度從小到大,可以分為執行緒池隔離、程序隔離、模組隔離、應用隔離、機房隔離。在資料庫的使用中,還經常用到讀寫分離。 

3)解耦

松耦合使得系統的單點故障波及範圍可以盡量小。面向介面的設計是松耦合的,只關注介面,不關注實現細節。另外,同步轉非同步也是解耦的一種方式。

4)限流

乙個系統的處理能力是有上限的,當服務請求量超過處理能力,通常會引起排隊,造成響應時間迅速提公升。並且由於系統過載,處理速度也會變慢,甚至引起雪崩。常見的限流演算法有:漏桶、令牌桶、滑動視窗計數等。

5)降級

業務降級,是指犧牲非核心的業務功能,保證核心功能的穩定執行。在後台通過開關控制,降級部分非主流程的業務功能,減輕系統依賴和效能損耗,從而提公升集群的整體吞吐率。

6)熔斷

為什麼要有熔斷?很多時候剛開始可能只是系統出現了區域性的、小規模的故障,然而由於種種原因,故障影響的範圍越來越大,最終導致了全域性性的後果。

7)發布相關

在測試、灰度、回滾、歷史資料等方面做考慮。

可用性設計 選單框架

1 完成相同或相近功能的按鈕用frame框起來,常用按鈕要支援快捷方式。2 完成統一功能或任務的按鈕放在集中位置,減少滑鼠移動的距離。3 按功能將選單劃分局域塊,用分隔線隔開,並要有功能說明或標題。4 介面要支援鍵盤自動瀏覽按鈕功能,按tab鍵自動切換。5 常用功能在選單中應當靠前,位置也應放在視窗...

三 vault 高可用性

高可用 vault用於生產環境的私密資訊管理,基於此,vault服務死機會影響到下游的所有使用者,vault被設計的支援高可用部署,降低一台機器或乙個程序宕掉時的破壞性,設計概述 vault的設計目的在於使其在短時間宕機時能保障vault的高可用,而不是水平可伸縮性。vault通常受限於與儲存庫 s...

可用性測試

工作一直緊張,但今天還是岔出了一件事情,就是對我負責的模組進行使用者可用性測試。兩個小時的測試還是有點收穫,小記之。剛剛從公司的培訓課程中學到了 usability test 沒想到這麼快就用到了實踐中,雖然這次的可用性測試不是很正式的從公司外部請使用者來做,也沒有用單面透視玻璃對使用者行為作 暗訪...