微服務1:微服務及其演進史
微服務2:微服務全景架構
微服務3:微服務拆分策略
微服務4:服務註冊與發現
微服務5:服務註冊與發現(實踐篇)
微服務6:通訊之閘道器
微服務7:通訊之RPC
微服務8:通訊之RPC實踐篇(附原始碼)
微服務9:服務治理來保證高可用
微服務10:系統服務熔斷、限流
微服務11:熔斷、降級的Hystrix實現(附原始碼)
微服務12:流量策略
微服務13:雲基礎場景下流量策略實現原理
微服務14:微服務治理之重試
在複雜的網際網路場景中,不可避免的會因為一些內在或者外在的因素,導致出現請求超時的情況。
而典型的業務超時場景主要有如下:
超時重試:對服務的核心介面進行細粒度設定,具體介面超時時間應該 ≥ TP999(即滿足999‰的網路請求所需要的最低耗時)的耗時。
執行過程說明
超時斷連:通過指定超時時間對請求進行斷連,達到降級的目的。避免長時間佇列阻塞,導致雪崩沿呼叫向上傳遞,造成整個鏈路崩潰。
執行過程說明
註釋比較清晰了,這邊就不解釋了。
# VirtualService
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
name: xx-svc-b-vs
namespace: kube-ns-xx
spec:
hosts:
- svc_b.google.com # 治理髮往 svc-b 服務的流量
http:
- match: # 匹配條件的流量進行治理
- uri:
prefix: /v1.0/userinfo # 匹配路由字首為 /v1.0/userinfo 的,比如 /v1.0/userinfo/1305015
retries:
attempts: 1 # 重試一次
perTryTimeout: 1s # 首次呼叫和每次重試的超時時間
timeout: 2.5s # 請求整體超時時間為2.5s,無論重試多少次,超過該時間就斷開。
route:
- destination:
host: svc_b.google.com
weight: 100
- route: # 其他未匹配的流量預設不治理,直接流轉
- destination:
host: svc_c.google.com
weight: 100
雲基礎場景下的治理手段各種各樣,這邊講解了初級版的超時重試和超時熔斷方案,讓使用者有一個更優良的使體驗。
同時在系統大面積崩潰的時候,進行系統保護,不至於全面崩塌。
在後續的章節我們逐一瞭解下故障注入、熔斷限流、異常驅逐等高階用法。