服務降級
限流是服務降級的一種,限制系統輸出和輸入流量從而保護系統。
系統吞吐量是一定的,可以通過壓力測試得到。有可能會超過系統閾值,為了保證系統的穩定,需要採取一些措施,比如,延遲處理,拒絕處理,部分拒絕處理等
計數器優勢:控制單位時間內的請求數量,簡單粗暴
劣勢:無法應對極短時間裡的突發流量
滑動視窗
增加乙個時間粒度的度量單位
漏桶規定固定容量的桶,有水進入,有水流出. 對於流進的水我們無法估計進來的數量、速度,對於流出的水我們可以控制速度.
令牌桶規定固定容量的桶,token 以固定速度往桶內填充,當桶滿時 token 不會被繼續放入,每過來乙個請求把 token 從桶中移除,如果桶中沒有 token 不能請求
中介軟體實現
hystrix
於2018 年 11 月,不再開放新功能
hystrix 的設計原則
對依賴服務呼叫時出現的呼叫延遲和呼叫失敗進行控制和容錯保護。
在複雜的分布式系統中,阻止某乙個依賴服務的故障在整個系統中蔓延。比如某乙個服務故障了,導致其它服務也跟著故障。
提供 fail-fast(快速失敗)和快速恢復的支援。
提供 fallback 優雅降級的支援。
支援近實時的監控、報警以及運維操作。
hystrix 更加細節的設計原則
阻止任何乙個依賴服務耗盡所有的資源,比如 tomcat 中的所有執行緒資源。
避免請求排隊和積壓,採用限流和 fail fast 來控制故障。
提供 fallback 降級機制來應對故障。
使用資源隔離技術,比如 bulkhead(艙壁隔離技術)、swimlane(泳道技術)、circuit breaker(斷路技術)來限制任何乙個依賴服務的故障的影響。
通過近實時的統計/監控/報警功能,來提高故障發現的速度。
通過近實時的屬性和配置熱修改功能,來提高故障處理和恢復的速度。
保護依賴服務呼叫的所有故障情況,而不僅僅只是網路故障情況。
spring cloud gateway 預設使用redis進行限流,筆者一般只是修改修改引數屬於拿來即用.並沒有去從頭實現上述那些演算法.
sentinel
通過配置來控制每個url的流量
配置內容在nacos上進行編輯
高可用 架構
不要把雞蛋都放在同一籃子裡 標準 1 正常情況下,使用者無論訪問哪乙個地點的業務系統,都能夠得到正確的業務服務。2 某個地方業務異常的時候,使用者訪問其他地方正常的業務系統,能夠得到正確的業務服務。與 活 對應的是字是 備 備是備份,正常情況下對外是不提供服務的,如果需要提供服務,則需要大量的人工干...
grafana高可用架構
grafana的高可用主要通過這兩項類保證 alerting目前還不支援高可用配置 database either mysql postgres or sqlite3 it s your choice type mysql host 192.168.99.100 3306 name grafana ...
Redis高可用架構
官網 解壓 tar zxvf redis 5.0.5.tar.gz 切換目錄 cd redis 3.2.9,執行編譯命令 make 切換到 redis 3.2.9 src 目錄執行命令 vim redis.conf protected mode no bind 127.0.0.1 daemonize...