本文章同時發佈於:
文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~
大家好,接下來要介紹 Istio DestinationRule 元件,他是用來處理流量導流的部分,可以靠他來處理 Load Balancer,你可能想問為什麼不直接用K8s的Load Balancer
呢?以我目前最大的感受是
K8s Load Balancer 無法分配 HTTP2 的長連線
GRPC 的特性產生的問題
傳統的 Restful API,都是一個 request 一個 response,而 GRPC 連線是一個長連線,並且利用此連線來連續送 request 與連續接收 response,
傳統的 Restful API 可以為每個 requests 做分流:
而 GRPC 的長連線會導致分流失敗:
使用一個能解析的 HTTP 的 Proxy 來解決問題
要解決長連線分配請求的方式很直覺,就是
實際解析長連線裡頭的內容
所以我們必須要有一個 Proxy 能夠看懂 HTTP 傳送的內容,不能再單純是轉發 requests 的 Load Balancer 了,
而 Envoy 就可以當作此請求的 Proxy,他解析之後就會如下圖發送請求: