1. 程式人生 > >API Gateway(API閘道器)介紹

API Gateway(API閘道器)介紹

API Gateway是一個伺服器,也可以說是進入系統的唯一節點。這跟面向物件設計模式中的Facade模式很像。API Gateway封裝內部系統的架構,並且提供API給各個客戶端。它還可能有其他功能,如授權、監控、負載均衡、快取、請求分片和管理、靜態響應處理等。

API Gateway負責請求轉發、合成和協議轉換。所有來自客戶端的請求都要先經過API Gateway,然後路由這些請求到對應的微服務。API Gateway將經常通過呼叫多個微服務來處理一個請求以及聚合多個服務的結果。它可以在web協議與內部使用的非Web友好型協議間進行轉換,如HTTP協議、WebSocket協議。

API Gateway

可以提供給客戶端一個定製化的API。它暴露一個粗粒度API給移動客戶端。以產品最終頁這個使用場景為例。API Gateway提供一個服務提供點(/productdetails?productid=xxx)使得移動客戶端可以在一個請求中檢索到產品最終頁的全部資料。API Gateway通過呼叫多個服務來處理這一個請求並返回結果,涉及產品資訊、推薦、評論等。

總結:API Gateway負責請求轉發、請求合成和協議轉換。它提供給應用客戶端一個自定義的APIAPI Gateway可以通過返回快取或者預設值的方式來掩蓋後端服務的錯誤。

以下分別介紹兩種不同的實現。

1. Kong

1.1 介紹

Kong 是一個可擴充套件開源的 API 層工具(也可以叫API閘道器或者API中介軟體). Kong 執行在任何 RESTful API 的前端,並且可以通過外掛方式擴充套件,這個外掛它提供了超越核心平臺的額外的功能和服務的。

具有以下特點:                                        

  • 可擴充套件性: Kong 通過簡單的增加機器節點,可以很容易的水平擴充套件,它通過簡單的增加機器節點.
  • 模組化: Kong 可以通過外掛方式擴充套件,這個外掛可以很容易的通過一個RESTful管理API來配置.
  • 可以執行在任何基礎架構: Kong 可以處處執行.
    您可以在雲或內部部署環境,包括單個或多個數據中心的設定,私有或者邀請受限APIs.
  •  程式語言:Nginx+Openresty+Lua
  •  儲存:Cassandra 分散式Nosql資料庫
  • 提供Rest API介面
  •  每個節點是無狀態的也就是說可以無限擴容
  • 提供 Authentication(認證)Security(安全)Traffic Control(頻率限制)Transformations(請求轉化)的外掛&很容易自定義外掛
  • 可以根據自己的業務需求定製開發
  • 模組化功能:
  • 授權、日誌、ip限流、限流、api統計分析、請求轉化、跨域、其他功能通過lua編寫外掛實現。

Kong 構建在高可靠技術,比如NGINX Apache Cassandra, 並且為你提供一個易用的來配置系統。

1.2 請求呼叫流程

1. Kong啟動

2. 每個請求先經過Kong

3. Kong代理訪問最終API

4. 在請求響應之間,Kong可以執行任何配置的外掛,達到增強APIs的目的

總結:Kong作為每個API請求的入口

2. Spring-cloud

2.1 介紹

spring-cloudspring提供的微服務整合開發框架。Spring Cloud 為開發者提供了在分散式系統(如配置管理、服務發現、斷路器、智慧路由、微代理、控制匯流排、一次性 Token、全域性鎖、決策競選、分散式會話和叢集狀態)操作的開發工具。使用 Spring Cloud 開發者可以快速實現上述這些模式。

為什麼使用spring-cloud

1. 經歷過netflix業務考驗,國外大規模使用

2. 入門門檻低,國內大批量使用spring

3. 快速搭建

Spring Cloud包含多個子專案:Spring Cloud ConfigSpring Cloud Netflix