微服務架構(六): API Gateway

工作中使用了微服務架構,接下來的一段時間裏,我會寫一系列的文章來介紹微服務架構,同時我也會在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也可以實現安全機制,驗證客戶端是被授權的。


示例:


四、結果


優點:

  • 把客戶端與應用是怎麼分割成微服務相隔離
  • 客戶端不需要知道service實例的地址
  • 提供給不同的客戶端優化的API
  • 減少請求環路、簡化客戶端邏輯。比如說,API Gateway使得客戶端用一次請求就可以從多個service處獲取數據。

缺點:

  • 增加了複雜性

發佈了123 篇原創文章 · 獲贊 334 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章