[微服務]API閘道器(API Gateway)
阿新 • • 發佈:2018-11-12
工作中使用了微服務架構,接下來的一段時間裡,我會寫一系列的文章來介紹微服務架構,同時我也會在github上寫一個microservices的應用框架(地址會在後續文章給出)。
這篇文章主要講述了微服務架構中的API Gateway。
翻譯和整理自:
- http://microservices.io/patterns/apigateway.html
一、問題
微服務架構應用的客戶端如何訪問個體的service?
二、強制條件
-
微服務提供的API的粒度與客戶端所需要的不一樣。微服務一般提供細粒度的API, 意味著客戶端需要與多個服務進行互動。
-
不同的客戶端需要不同的資料。比如說,桌面瀏覽器比手機版本的APP需要更細粒度的資料。
-
服務的數量和地址動態改變。
-
服務的分割會隨著時間改變,這對於客戶端應該是隱藏的。
三、解決方案
實現一個API Gateway, 這是所有客戶端的唯一入口點。
API Gateway用兩種方式來處理請求,一種是直接把請求轉發到合適的service,另一種是寫一些業務邏輯,跨多個service。
與一刀切的API對應的是,API Gateway可以暴露給不同的客戶端不同的API。API Gateway也可以實現安全機制,驗證客戶端是被授權的。
示例:
- Netflix API gateway
- A simple Java/Spring API gateway from the Money Transfer example application.
四、結果
優點:
- 把客戶端與應用是怎麼分割成微服務相隔離
- 客戶端不需要知道service例項的地址
- 提供給不同的客戶端優化的API
- 減少請求環路、簡化客戶端邏輯。比如說,API Gateway使得客戶端用一次請求就可以從多個service處獲取資料。
缺點:
- 增加了複雜性
應用場景舉例: