API设计 - 分成不同的子域(微服务)

时间:2016-11-06 04:38:37

标签: node.js api docker kubernetes microservices

我们的应用程序基于API第一架构,目前基于单个域/服务:

api.todos.com

API的消费者是:

  • 我们的网络前端
  • 我们的移动应用
  • 其他商家/公众

我们将为同一个应用程序构建用不同语言编写的新微服务。例如,我们可以为:

开发API服务
  • 统计
  • 博客/内容
  • RSS Feed
  • 搜索

我的问题是处理域名。是否最好将每个服务拆分为不同的子域,例如

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

或者,在我们执行HTTP(第7层)路由以到达我们的端点的情况下,拥有一个统一的API域会更好。 e.g。

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

不确定哪个更适合公共API?拥有多个子域并且不必处理中间路由层/代理会更容易。

1 个答案:

答案 0 :(得分:0)

作为系统架构师,我认为it is better to have a single unified API domain where we do HTTP (layer 7) routing to reach our endpoints。您可以使系统更加灵活,无需为客户进行任何更改。例如,您有一个带路径的微服务:

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

将来你可以通过这条路线拆分微服务。

但主要是,它取决于您将使用的API网关。 API网关是系统中的单一入口点,用于纠正微服务的代理请求。它还可以进行身份​​验证和缓存。有关此微服务模式的更多信息,请阅读here