service mesh與api gateway的關鍵特徵可以幫助我們更好的區分兩者。
API Gateway: 將服務作爲託管api暴露給外部
api gateway的核心目標是將微服務作爲託管的api暴露給外部系統,我們在api gateway層開發api或是邊界服務以提供特定的業務功能。
api/邊界服務調用下游微服務,幷包含業務邏輯的多個服務下游服務組合。
api/邊界服務同時需要以彈性的方式調用下游服務,並應用多種穩定性相關模塊,例如斷路器、超時、負載均衡/故障轉移等等。大多數api gateway解決方案均內置以上模塊或功能。
api gateway往往同時包含內置的服務發現、分析(指標、監控、分佈式日誌、分佈式跟蹤)以及安全。
api gateway常與api管理生態中的一些其他組件協作,例如api商店、api分發門戶。
service mesh
那麼再看看service mesh有何不同。
我們可以認爲service mesh是網絡通信基礎設施,它允許我們從服務代碼中剝離大部分應用網絡功能。
在service mesh下,我們處理service-to-service通信時,不需要刻意在服務代碼中實現包括斷路器、超時等彈性通信功能特性。同樣的,service mesh提供服務發現、監控等功能。
api gateway和service mesh
api gateway和service mesh最大的不同在於,api gateway是暴露api/邊界服務的關鍵部分,而service mesh僅僅是一種服務間通信的基礎設施,不包含任何業務概念。
上圖說明了api gateway和service mesh的所處。除了上面提到的不同點,api gateway和service mesh之間存在着很多重疊特性,但需要特別注意的是兩者所針對的要求和需求不同。
圖中service mesh以sidecar形勢,與其他服務一起部署,獨立於服務的業務功能。
而api gateway託管了所有的api服務,屬於業務功能解決方案的一部分。api gateway可能會包含服務間通信的支持,但並不影響api gateway通過service mesh來調用下游服務。
閱讀更多
開源PaaS Rainbond原生支持Service Mesh服務網格,用非入侵、透明化的方式解決服務發現和註冊、彈性伸縮與負載均衡、容錯處理(斷路器與限流)、監控與警報、數據存儲與共享、日誌分析等等微服務架構難題,提供開箱即用、簡單強大的微服務體驗。