在線網站一般都會有服務器壓力劇增的時候,比如說網上商城的促銷,這個時候常用的手段就是服務降級,根據當前業務情況及流量對一些服務和頁面有策略的降級,以此緩解了服務器資源壓力,以保證核心任務的正常運行,同時也保證了部分甚至大部分客戶得到正確響應。
服務降級實施策略
- 頁面拒絕服務:頁面提示由於服務繁忙此服務暫停。跳轉到varnish或nginx的一個靜態頁面。
- 服務接口拒絕服務:無用戶特定信息的頁面能訪問,提示服務器繁忙。頁面內容也可在緩存(Varnish)或CDN內獲取。
- 延遲持久化:頁面訪問照常,但是涉及記錄變更,會提示稍晚能看到結果,將數據記錄到異步隊列或log,服務恢復後執行。
- 隨機拒絕服務:服務接口隨機拒絕服務,讓用戶重試,目前較少採用。因爲用戶體驗不佳。
現在說一下dubbo服務的降級方式,有兩種方式:
- 在dubbo-admin中進行動態配置來事項降級
其中動態配置中的參數可以定義超時時間
這裏可以使用debug測試,讓服務超時,很快消費者會報錯
這裏的mock值,這裏有容錯和屏蔽兩個選擇
屏蔽(mock=force):
mock=force:return+null 表示消費方對該服務的方法調用都直接返回 null 值,不發起遠程調用。用來屏蔽不重要服務不可用時對調用方的影響
消費者放直接返回null不遠程調用服務
容錯(mock=fail)
還可以改爲 mock=fail:return+null 表示消費方對該服務的方法調用在失敗後,再返回 null 值,不拋異常。用來容忍不重要服務不穩定時對調用方的影響。
如果調用失敗後返回null
- 通過註冊配置實現
<dubbo:reference id="iUser" interface="com.dubbosample.iface.IUser" timeout="1000" check="false" mock="return null">