深入講解大流量網站下——高可用原則

實現高可用原則主要有:降級、限流、切流量、可回滾,接下來仔細講述一下。

1.降級

對於一個高可用服務,很重要的一個設計就是降級開關,在設計降級開關時,要根據以下步驟:

 

  • 開關集中化管理:通過推送機制把開關推送到各個應用。

  • 可降級的多級服務:比如服務調用降級爲只讀本地緩存、只讀分佈式緩存、只讀默認降級數據(例如庫存狀態默認有貨)。
  • 開關前置化,如架構是Nginx-->Tomcat,可以將開關前置到Nginx接入層,在Nginx層做開關,請求流量不回源後端Tomcat應用或者只是一小部分流量回源。
  • 業務降級:當高併發流量來襲,在電商系統大促設計時保障用戶能下單、能支付是核心要求,並保障數據最終一致性即可。這樣就可以把一些同步調用改爲異步調用,優先處理優先級高或者特殊特徵的數據,合理分配進入系統的流量,以保障系統可用。

2.限流

限流的目的是放置惡意請求流量、惡意攻擊,或者防止流量超出系統峯值。

原則是限制流量穿透到後端薄弱的應用層。

可以設計如下:

  • 惡意請求流量只訪問到cache
  • 對於穿透到後端應用的流量可以考慮使用Nginx的limit模塊處理
  • 對於惡意IP可以使用nginx deny進行屏蔽

3.切流量

對於一個大型應用,切流量是非常重要的,比如多機房環境下某個機房掛了,或者某個機架掛了,或者某臺服務器掛了,都需要切流量,可以用如下方法進行切換:

  • DNS:切換機房入口
  • HttpDNS:主要在APP場景下,在客戶端分配好流量入口,繞過運行商LocalDNS並實現更精準流量調度
  • LVS/HaProxy:切換故障的Nginx接入層
  • Nginx:切換故障的應用層

4.可回滾

版本化的目的是實現可審計可追溯可回滾。當程序或數據出錯時,如果有版本化機制,那麼就可以通過回滾恢復到最近一個正確的版本,比如事務回滾、代碼庫回滾、部署版本回復你、數據版本回滾、靜態資源版本回滾。通過回滾機制可以保證系統某些場景下的高可用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章