工作中使用了微服務架構,接下來的一段時間裏,我會寫一系列的文章來介紹微服務架構,同時我也會在github上寫一個microservices的應用框架(地址會在後續文章給出)。
這篇文章主要講述了微服務架構中的API Gateway。
翻譯和整理自:
- http://microservices.io/patterns/apigateway.html
一、問題
二、強制條件
-
微服務提供的API的粒度與客戶端所需要的不一樣。微服務一般提供細粒度的API, 意味着客戶端需要與多個服務進行交互。
-
不同的客戶端需要不同的數據。比如說,桌面瀏覽器比手機版本的APP需要更細粒度的數據。
-
服務的數量和地址動態改變。
-
服務的分割會隨着時間改變,這對於客戶端應該是隱藏的。
三、解決方案
- Netflix API gateway
- A simple Java/Spring API gateway from the Money Transfer example application.
四、結果
優點:
- 把客戶端與應用是怎麼分割成微服務相隔離
- 客戶端不需要知道service實例的地址
- 提供給不同的客戶端優化的API
- 減少請求環路、簡化客戶端邏輯。比如說,API Gateway使得客戶端用一次請求就可以從多個service處獲取數據。
缺點:
- 增加了複雜性