可用性之服務隔離
服務隔離的目的
在系統發生故障時限制其影響范圍
隔離在保障整個服務的可用性上具有重要作用
隔離維度
執行緒級別的隔離:不同的任務給不同的執行緒執行
行程級別的隔離:將系統業務拆分成多個微服務,部署到不同的機器上
行程間的通信方式:不同機器經過遠程呼叫,相同機器通過記憶體,管道(記憶體中的一種特殊的檔案),訊息來通信
快慢隔離:避免佇列阻塞,視頻審核優先處理小視頻;error日志和非error日志分開采集
熱點隔離:有靜態和動態熱點資料,實作動態發現熱點的功能,提前預熱快取;隔離,使用單獨的服務來處理
業務核心程度隔離:按照服務的核心程度,將服務分級,重要程度高的服務單獨部署,并提供冗余資源提高容災能力
動靜分離之表設計:視頻基本資訊和播放量等頻繁變更的資料分離
動靜分離之CDN:靜態資源通過CDN加速
可用性之服務限流
在一段時間內,可以處理多少個請求,應對突發流量,防止某個用戶將系統資源耗盡影響其他用戶使用,控制成本,在有限資源下能穩定提供服務
在哪些地方要限流:請求入口處,使用nginx的配置限流 ,業務服務入口處,api網關等中間件
分布式限流
令牌桶和漏桶只能針對單個節點,分布式限流是整個應用全域的流量,分布式限流一般用Redis實作
如何確定流量的閾值:全鏈路壓測,使用訊息中間件存盤請求資料,然后在壓測平臺回放流量
基于回應時間的動態限流:首先我們記錄每次呼叫后端請求的回應時間,然后在一個時間區間內(比如5秒)計算這段時間的P90或P99,如果P90或P99大于我們設定的閾值我們就自動限流
基于系統資源的動態限流:通過系統資源使用率動態限流,統計一段時間的系統資源(CPU、記憶體)達到某個百分點就限流
可用性之服務降級
通過降低回復呼叫方的質量來減少系統的作業量,例如推薦系統出問題,直接回傳預設的默認商品展示,雙十一暫時關閉一些功能也是降級的一種
通過熔斷避免服務雪崩:區域故障引發全域故障就是雪崩,核心服務呼叫的其他服務資源不足導致核心服務被阻塞,這種情況可以通過熔斷降級來解決,失敗達到指定次數,服務開啟熔斷,關閉達到指定時間,服務半開,成功達到指定次數,服務全開
哪些情況需要降級:依賴服務不可用,回應時間過長
降級的實作方式:對服務定級,讓非核心服務先降級,降低回傳結果的精確度,請求短路,不走DB,回傳快取,簡化流程,放棄部分操作,延遲執行
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/548445.html
標籤:Java
下一篇:作業系統面經-行程
