降級 降級 對於一個高可用服務,很重要的一個設計就是降級開關。在設計降級開關時,主要有以下思路: 1.開關集中化管理:通過推送機制把開關推送到各個應用。 2.可降級的多級服務:比如服務調用降級為只讀本地緩存,只讀分散式緩存,只讀預設降級數據(如庫存狀態預設有貨) 3.開關前置化:如架構是nginx ...
-
降級
對於一個高可用服務,很重要的一個設計就是降級開關。在設計降級開關時,主要有以下思路:
1.開關集中化管理:通過推送機制把開關推送到各個應用。
2.可降級的多級服務:比如服務調用降級為只讀本地緩存,只讀分散式緩存,只讀預設降級數據(如庫存狀態預設有貨)
3.開關前置化:如架構是nginx --> tomcat,可以將開關前置到nginx接入層,在nginx層做開關,請求流量不回源後端tomcat應用或者只是一小部分流量回源。
4.業務降級:當高併發流量來襲,在電商系統大促設計時保障用戶能下單,能支付是核心要求,並保障數據最終一致性即可。這樣就可以把一些同步調用改為非同步調用,優先處理高優先順序數據或特殊特征的數據,合理分配進入系統的流量,以保證系統可用。
-
限流
限流的目的是防止惡意請求流量、惡意攻擊,或者防止流量超出系統峰值。可以考慮以下思路:
1.惡意請求流量只訪問到cache。
2.對於穿透到後端應用的流量可以考慮使用nginx的limit模塊處理。
3.對於惡意IP可以使用nginx deny進行屏蔽。
這些操作的原則是限制流量穿透到後端薄弱的應用層。
-
可回滾
版本化的目的是實現可審計可追溯,並且可回滾。當程式或者數據出錯時,如果有版本化機制,那麼就可以通過回滾恢復到最近一個正確的版本,比如事務回滾、代碼庫回滾、部署版本回滾、數據版本回滾、靜態資源版本回滾等。通過回滾機制可保證系統某些場景下實現高可用。