什么是API Gateway
在微服務(wù)中谣殊,一次用戶操作的流程如下:
- 用戶在瀏覽器點(diǎn)擊我們的應(yīng)用
- 瀏覽器訪問我們的FrondEnd服務(wù)澄惊,獲取JS箩言、HMTL硬贯、CSS、Image等等靜態(tài)資源
- 瀏覽器執(zhí)行JS陨收,發(fā)送API請(qǐng)求
- 瀏覽器發(fā)送的API請(qǐng)求到達(dá)API Gateway
- Gateway根據(jù)API的路由規(guī)則澄成,將請(qǐng)求轉(zhuǎn)發(fā)給特定微服務(wù)
- 特定微服務(wù)處理完成請(qǐng)求后,返回給Gateway
- Gateway返回請(qǐng)求給瀏覽器
- 瀏覽器JS處理返回?cái)?shù)據(jù)畏吓,重新渲染結(jié)果
什么是K8S Ingress
K8S Ingress 是為了讓外部訪問k8s cluster內(nèi)部服務(wù)API的入口。典型的是HTTP請(qǐng)求訪問卫漫。
Ingress可以做到:
- API路由
- SSL證書
- 負(fù)載均衡
image.png
為什么K8S中選擇Gateway是一個(gè)糾結(jié)的選項(xiàng)
第一菲饼, K8S本身提供了多種gateway的備選
- ingress能夠?qū)崿F(xiàn)部分API gateway的能力
- K8S內(nèi)部有專門的API Gateway可以使用
- ISTIO提供了強(qiáng)大的GATEWAY
第二,微服務(wù)框架本身提供了多種API Gateway
問題來了列赎,我們應(yīng)該選擇K8S API Gateway能力呢宏悦? 還是說,選擇微服務(wù)框架自身的API gateway包吝? 如果選擇了K8S的API Gateway饼煞,那么應(yīng)該選擇哪些ingress還是API gateway或者是ISTIO?
這里有兩種流派:
- 把K8S作為部署平臺(tái)诗越,不跟他耦合砖瞧,所有的業(yè)務(wù)在自己的代碼里,包括路由等基本gateway能力嚷狞、以及熔斷等高級(jí)gateway邏輯
- 把K8S作為應(yīng)用的一部分块促,將API路由、熔斷床未、等等交給K8S或者ISTIO來承載
To be continued...