新聞中心
云原生時代下的網(wǎng)關V.S反向代理
作者:JavaEdge 2021-01-13 07:15:41
云計算
云原生 WEB1.0/2.0時代,使用前置反向代理,由運維負責 nginx,進行反向代理和負載均衡、安全認證、限流緩存等功能。網(wǎng)站升級頻率較低,反向代理大多采用靜態(tài)配置方式。

簡介
- 網(wǎng)關主要服務于微服務/API,偏向研發(fā)人員
- 反向代理主要面向傳統(tǒng)靜態(tài)web應用,偏向運維
- 而未來趨勢是DevOps+網(wǎng)關和反向代理再次融合
發(fā)展演進史
WEB1.0/2.0時代,使用前置反向代理,由運維負責 nginx,進行反向代理和負載均衡、安全認證、限流緩存等功能。網(wǎng)站升級頻率較低,反向代理大多采用靜態(tài)配置方式。
微服務時代,API 服務升級頻率高,傳統(tǒng)的 nginx 動態(tài)配置較差,且運維執(zhí)行效率低,就需要使用動態(tài)配置的網(wǎng)關服務,便于研發(fā)自主配置。
云原生時代提出更高要求,還需要支持灰度發(fā)布。要求網(wǎng)關不僅可動態(tài)配置,還要能動態(tài)編程,所以出現(xiàn)網(wǎng)關和反向代理融合的趨勢,典型產(chǎn)品比如 envoy 和 Traefik。
云原生時代下的可編程網(wǎng)關
在k8s中,和網(wǎng)關等價的概念叫Ingress,像kong/envoy/traefik這些可編程網(wǎng)關,都有支持對接Ingress。
所有不同的端,ios 安卓 h5 web,要不要分,還是要看業(yè)務和團隊規(guī)模,比如攜程內(nèi)部就有超過十套以上面向不同端的網(wǎng)關,總網(wǎng)關集群規(guī)模超過百臺。對大體量多團隊的公司,網(wǎng)關如果分的不夠,不同團隊容易打架。微服務也是這個道理,服務分分多少多細,也主要看體量和團隊規(guī)模,小團隊不分也沒事。
安全認證要求,對于不同部門可能不一樣,比如支付部門要求更嚴格,所以可以獨立定制部署。
總之nginx偏運維,spring gateway對中國java程序員更友好。
二者概念區(qū)分
如果你意識到它們不是互斥的,則更容易考慮它們。將API網(wǎng)關視為特定類型的反向代理實現(xiàn)。
經(jīng)常將兩者結(jié)合使用時,API網(wǎng)關被視為位于反向代理后面的應用程序?qū)樱赃M行負載平衡和運行狀況檢查。一個例子就是類似WAF的三層結(jié)構(gòu),其中Web應用程序防火墻/ API網(wǎng)關被反向代理層夾持,其中一個反向代理層用于WAF本身,另一個用于與之對話的單個微服務。
關于差異,它們非常相似。這只是術語。當進行基本的反向代理設置并開始使用更多功能(如身份驗證,速率限制,動態(tài)配置更新和服務發(fā)現(xiàn))時,人們更有可能調(diào)用該API網(wǎng)關。
反向代理+網(wǎng)關部署架構(gòu)
由于架構(gòu)演進的歷史原因,很多公司都是反向代理和網(wǎng)關并存的架構(gòu)
這樣就得維護兩套系統(tǒng),肯定比較復雜,所以最好是結(jié)合統(tǒng)一:
參考
https://stackoverflow.com/questions/35756663/api-gateway-vs-reverse-proxy
本文轉(zhuǎn)載自微信公眾號「 JavaEdge」,可以通過以下二維碼關注。轉(zhuǎn)載本文請聯(lián)系 JavaEdge公眾號。
網(wǎng)站名稱:云原生時代下的網(wǎng)關V.S反向代理
當前路徑:http://m.fisionsoft.com.cn/article/ccicopo.html


咨詢
建站咨詢
