什么是API gateaway?API gateway解決那些問題?
在微服務架構中,每個客戶端都需要調用一個或多個API,那么客戶端如何知道要調用的后端接口是什么?
當引入新的API會API接口更新時,如何把信息同步給客戶端?以及API如何處理安全、日志、限速等所有API都需要考慮的問題?
API gateaway是位於客戶端和API之間的一個單點入口,它作為反向代理將客戶端的請求路由到后面的一組API(同時,API gateaway可以承擔cross-cutting交叉功能,如安全與認證,請求速率管理、日志、緩存等)。
如果沒有API gateway客戶端就會直接直接把請求發送給API,此時可能存在以下問題:
1)客戶端調用代碼復雜,需要和多個API進行交互,並且要處理來之不同API的不同錯誤。
2)耦合度高,客戶端要知道各個API的調用細節,當API的接口發生變化,客戶端也要進行更改.
3)客戶端的一次操作可能調用多個API,此時會產生更多的網絡調用和延遲.
4)每次公共網絡調用API都需要經過安全測試.
5)API必須使用對調用端友好通信協議,如http或websocket.
API歸納為三種模式
1)路由(URL):API gateaway作為反向代理將客戶端請求路由到API,API gateaway作為單點入口對客戶端和API進行解耦。
2)聚合:當客戶端的某個操作需要調用多個API時,API gateaway可以把多個API請求聚合為一個請求,即客戶端發送一個請求至API gateaway,API gateaway分發多個請求到各個API,並且將各個API返回到應答聚合成一個應答返回給客戶端,從而達到降低請求交互次數的作用。
3)卸載:API gateaway可以卸載API的功能,尤其是一些crossing cutting交叉功能。因此我們可以在API gateway單點實現功能,而不是在各個API上重復實現。