2015-10-16 136 views
7

對於我的新項目,我必須使用微服務與Api網關。所以我收集了有關Micro Service的詳細信息,但Api Gateway部分尚不清楚。微服務與API網關

我的問題是,

  1. 有沒有人知道如何路由部分請求在阿比 網關做了什麼?
  2. 是可以通過簡單的做,如果條件[僞代碼: 如果(關鍵字==「產品」),那麼路徑(「產品服務」)?
  3. 或者是否有更好的方法來做到這一點?

我正在使用C#.Net開發Api。
我得到了API網關的一些信息從https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

Api Gateway

+1

API網關就像一個安全的代理+日誌記錄。您可以將url傳遞給您想要訪問的「產品」服務,網關將代理它。 – sed

回答

9

你幾乎問了三個問題,而且都有點關係,所以我會盡我所能來解決所有三個在一起。

首先,API網關中的請求路由不僅僅是一個代理,實現不會涉及在將它發送到下游服務之前檢查請求的條件。 API網關可能是您的服務的唯一入口點,在該入口點,該層中的身份驗證也將被處理,以確保請求具有訪問下游服務的權限。認證可能是另一項服務本身。 API網關的高級實施可能會整合所有下游服務中的大多數(如果不是全部)端點。

讓我們來看一個小例子,例如一個電子商務應用程序,其中包含一個用於列出產品,搜索產品和購物車的服務。然後,API網關也會擁有相同的端點,並將該請求進一步委派給負責該請求的服務。此示例中的API可能有/products列出所有產品,/products?query=...以搜索產品,最後/carts/:id/products列出購物車中的產品。希望這回答你的問題。

除此之外,我知道你已經提到過它的一個新項目,只是想給你2美分,如果你的團隊真的很小,這可能不是用於新項目的最佳體系結構,因爲有很大的運營開銷。需要標準化,自動化部署,集成等的開銷。它最好從傳統的MVC體系結構開始,並在項目啓動時慢慢演變成微服務。

+0

它提供了一些想法。謝謝! –

1

根據您的體系結構,您可以使用一些非常酷的軟件,如CoreOS的Weave(https://github.com/weaveworks/weave)。我們使用Docker將我們的應用程序分發到CoreOS節點,然後內部DNS由Weave處理。

這真的很棒,因爲我們只需將端口轉發到應用程序名稱,然後我們即將離開。

例如,一個用戶請求application.com/api/apiName/request/path

我們的網關與節點來實現。js,並且它使用/ api之後的apiName將其路由到該api,然後將該URL的以下路徑附加到該調用本身。

所以來自網關的請求將作爲apiName:8080/request/path在內部被代理。在這方面,當新服務出現時,API不需要更改,因爲路徑是根據請求動態創建的。

這很好,因爲我們不必擔心跟蹤來自不同API的路徑並將它們存儲在某處。

如果不是這樣,您將不得不維護一些(可能是外部的)端點列表,以使其更容易。這可以通過API本身以編程方式完成。

但是,我不確定你的要求是什麼,而且正如威爾所回答的那樣,它的確會產生相當大的基礎設施成本。然而,我們的版本是快速和無痛的,因爲我們不必擔心在多個層次上進行代碼更改,新的API可以免費獲得我們的網關代理,日誌記錄和認證。