2016-11-06 47 views
1

我們的應用程序基於API第一體系結構,目前基於單個域/服務:API設計 - 分裂成不同的子域(微服務)

api.todos.com

API的消費者分別是:

  • 我們網絡的前端
  • 我們的移動應用
  • 其他業務/公共

我們將建立新的微服務爲不同的語言編寫的相同的應用程序。例如,我們可以開發API服務:

  • 統計
  • 博客/內容
  • RSS訂閱
  • 搜索

我的問題是圍繞處理領域。最好是將每個服務分成不同的子域,例如

  • api.todos.com
  • stats.todos.com
  • content.todos.com
  • rss.todos.com
  • search.todos.com

或者是它最好有我們做一個統一的API域HTTP(第7層)路由到達到我們的終點。例如

  • api.todos.com/todos
  • api.todos.com/stats
  • api.todos.com/content
  • api.todos.com/rss
  • api.todos.com/search

不知道這是最好的公共API?擁有多個子域會更容易,不必處理中間路由層/代理。

回答

0

作爲系統架構師,我認爲it is better to have a single unified API domain where we do HTTP (layer 7) routing to reach our endpoints。您可以讓您的系統更靈活,而無需爲您的客戶進行任何更改。例如你有一個航線的microService:

  • api.todos.com/route1
  • api.todos.com/route2

在未來,你可以通過這個途徑分裂微服務。

但大多數情況下,它取決於您使用的API網關。 API網關是您系統中的單一入口點,以及更正微服務的代理請求。它也使auth和緩存。更多關於這個微服務的模式,你可以閱讀here