2016-03-02 181 views
35

爲了處理微服務體系結構,它經常與反向代理(例如nginx或apache httpd)一起使用,以及用於橫切關注實現API gateway pattern is used。有時候,反向代理會執行API網關的工作。
很高興看到這兩種方法之間的明顯差異。 它看起來像API網關使用的潛在好處是調用多個微服務並聚合結果。 API網關的所有其他responsibilities可以使用反向Proxy.Such爲實現:API網關與反向代理

  • 認證(可以使用nginx的LUA腳本完成);
  • 運輸安全。它本身就是反向代理任務;
  • 負載均衡
  • ....

所以在此基礎上有幾個問題:

  1. 是否有意義使用的API網關和同時放反向代理(如實例請求 - > Api網關 - >反向代理(nginx) - >具體mictoservice)?在什麼情況下?
  2. 使用API​​網關可以實現哪些其他差異,無法通過反向代理實現,反之亦然?

回答

32

如果你意識到它們並不相互排斥,那麼考慮它們會更容易。將API網關看作是特定類型的反向代理實現。

關於您的問題,將API網關視爲位於反向代理後面的應用程序層進行負載平衡和運行狀況檢查時,並不罕見。一個例子就像WAF三明治體系結構一樣,您的Web應用程序防火牆/ API網關夾在反向代理層之間,一個用於WAF本身,另一個用於與它交談的單個微服務。

關於差異,它們非常相似。這只是命名。當你進行一個基本的反向代理設置,並開始在認證,速率限制,動態配置更新和服務發現等更多部分上進行連接時,人們更可能稱之爲API網關。

+0

糾正我,如果我錯了,但我可以在同一個生態系統中使用。使用API​​網關更多的是協調對儀表板監視和安全約束添加的動態和常量更改,使用像nginx這樣的反向代理可以更有效地服務靜態和固定子域,從而爲實例提供負載均衡。 – aelkz

12

我相信,API網關是可被配置成動態地經由API和潛在經由UI的反向代理,而傳統的反向代理(喜歡的Nginx,HAProxy的或Apache)經由配置文件配置並且必須被當重新啓動配置更改。因此,當路由規則或其他配置經常改變時,應使用API​​網關。你的問題:

  1. 只要在這個序列中的每個組件都符合其目的,這是有道理的。
  2. 差異不在功能列表中,而是以應用配置更改的方式進行。

另外,API網關通常以SAAS的形式提供,例如ApigeeTyk

而且,這裏是我的關於如何創建一個簡單的API網關與Node.js的https://memz.co/api-gateway-microservices-docker-node-js/

希望它可以幫助教程。