1. 程式人生 > >[微服務]API閘道器(API Gateway)

[微服務]API閘道器(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處獲取資料。

缺點:

  • 增加了複雜性

應用場景舉例: