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