介面級故障的典型表現就是系統並沒有宕機,網路也沒有中斷,但業務卻出現問題了
導致介面級故障的原因一般有下面幾種:
解決介面級故障的核心思想和異地多活基本類似:優先保證核心業務和優先保證絕大部分使用者。
降級降級指系統將某些業務或者介面的功能降低,可以是只提供部分功能,也可以是完全停掉所有功能。
降級的核心思想就是丟車保帥,優先保證核心業務。
常見的實現降級的方式有:
熔斷降級的目的是應對系統自身的故障,熔斷的目的是應對依賴的外部系統故障的情況。
場景:a服務的x功能依賴b服務上的某個介面,但由於b服務的該介面相應較慢,導致a服務的執行緒卡在x功能的處理上,此時,a服務的其他功能都會被卡住或相應非常慢,這時就需要熔斷機制。
熔斷機制實現的關鍵是需要有乙個統一的 api 呼叫層,由 api 呼叫層來進行取樣或者統計,如果介面呼叫散落在**各處就沒法進行統一處理了。
熔斷機制實現的另外乙個關鍵是閾值的設計。實踐中一般都是先根據分析確定閾值,然後上線觀察效果,再進行調優。
限流降級是從系統功能優先順序的角度考慮如何應對故障,而限流則是從使用者訪問壓力的角度來考慮如何應對故障。限流指只允許系統能夠承受的訪問量進來,超出系統訪問能力的請求將被丟棄。
限流一般都是系統內實現的,常見的限流方式可以分為兩類:基於請求限流和基於資源限流。
為了找到合理的閾值,通常情況下可以採用效能壓測來確定閾值,但效能壓測也存在覆蓋場景有限的問題,可能出現某個效能壓測沒有覆蓋的功能導致系統壓力很大;另外一種方式是逐步優化,即:先設定乙個閾值然後上線觀察運**況,發現不合理就調整閾值。排隊
排隊實際上是限流的乙個變種,限流是直接拒絕使用者,排隊是讓使用者等待一段時間.
由於排隊需要臨時快取大量的業務請求,單個系統內部無法快取這麼多資料,一般情況下,排隊需要用獨立的系統去實現,例如使用 kafka 這類訊息佇列來快取使用者請求。
ps:如果你來設計乙個整點限量秒殺系統,包括登入、搶購、支付(依賴支付寶)等功能,你會如何設計介面級的故障應對手段?
答:1.對於使用者服務,在搶購期間可以準備降級策略,壓力過大時保證使用者登入的可用,註冊和修改資訊可以做降級處理
2.搶購下單涉及到訂單,庫存,和商品查詢。可通過請求排隊來限流,超出庫存的請求直接返回。
為了應對庫存和商品服務可能發生的故障,可以提前對商品資料和庫存資料做快取,如果對端服務故障,本地也可以提供服務
3.支付依賴第三方系統,合理設定熔斷策略,如支付平均時長超過限制可提示使用者稍晚做支付
如何應對線上故障
線上故障是我們技術同學經常遇到,也是技術成長中經常要經歷的事。從故障中我們可以吸取到很多教訓,變得越來越有經驗。但是並不是每乙個團隊 技術同學在應對故障的處理方式上,都能做到合理和科學。下面我就從線上故障的應對和處理方面,簡單的聊一聊我的看法。故障發生時的處理 1 快速定位故障 在複雜的系統架構中,...
無線互訪故障的現象及其應對辦法
伴隨著無線上網技術的不斷成熟以及無線網路裝置 的不斷走低,無線區域網的 身影 正不知不覺地出現在我們的工作和生活中。相比普通的區域網互訪操作,無線互訪更容易遭遇一些莫名其妙的故障干擾,在面對這些故障時,許多人往往會覺得無法應對。有鑑於此,本文現在就將頻繁發生的一些無線互訪故障現象以及應對辦法貢獻出來...
如何應對天氣的突變
全球變暖已經是個不爭的事實,即使是在偏北的天津,對熱字的理解也決不比在深圳時差。所以先是習慣了深圳的酷暑與汽車尾氣之後,輾轉來到天津又再次習慣了天津不同於華中和華南的寒冷,於是到了現在。現在氣候很不一般,在太陽下活動數分鐘之後,估計體內會產生大量急需排除的熱毒 而排除熱毒的方法分內外兩種。先講外法。...