2023/05/23 更新: 為了避免本文章散落在不同網站,之後統一由部落格更新,再麻煩從部落格查看~
本文章同時發佈於:
文章為自己的經驗與夥伴整理的內容,設計沒有標準答案,如有可以改進的地方,請告訴我,我會盡我所能的修改,謝謝大家~
大家好,接下來要介紹 Istio DestinationRule 元件,他是用來處理流量導流的部分,可以靠他來處理 Load Balancer,你可能想問為什麼不直接用K8s的Load Balancer呢?以我目前最大的感受是
K8s Load Balancer 無法分配 HTTP2 的長連線
傳統的 Restful API,都是一個 request 一個 response,而 GRPC 連線是一個長連線,並且利用此連線來連續送 request 與連續接收 response,
傳統的 Restful API 可以為每個 requests 做分流:

而 GRPC 的長連線會導致分流失敗:

要解決長連線分配請求的方式很直覺,就是
實際解析長連線裡頭的內容
所以我們必須要有一個 Proxy 能夠看懂 HTTP 傳送的內容,不能再單純是轉發 requests 的 Load Balancer 了,
而 Envoy 就可以當作此請求的 Proxy,他解析之後就會如下圖發送請求:
