代码之家  ›  专栏  ›  技术社区  ›  Adam Siemion

如何在将一个整体拆分为微服务时定义api网关url

  •  1
  • Adam Siemion  · 技术社区  · 8 年前

    我们正在将Monolith应用程序拆分为微服务。这将是一个渐进的过程,这意味着最初我们将从2个微服务开始,稍后我们将把它们分成更多等等。

    monoligh公开了一个rest api,它提供了管理数十个不同实体(例如用户、用户类型、角色、角色类型等)的方法。Monolith只公开了一个rest api的使用者——一个javascript前端应用程序。

    我们目前正在研究两种配置api网关(zuul)的可能性:

    1. URL将包含微服务名称,例如 /api/dictionary 将服务 /api/dictionary/user_types /api/dictionary/role_types ,而 /api/data 将服务 /api/data/users /api/data/roles . 这意味着,随着我们创建更多的微服务,url将随着时间的推移而改变。每次我们这样做,消费者(前端)将不得不改变。

    2. URL将基于实体名称,例如 /api/users , /api/user_types , /api/roles /api/role_types . 缺点是zuul配置必须包含系统管理的每个实体的显式配置。

    以上哪种方法是正确的?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Abhijeet    8 年前

    曼梅的话是对的。为了长远利益,你应该采取第一种方法。 如果您仍然需要其他方法,那么您可以将这两种方法结合起来,配置您的api网关,这样它将路由您的请求

    • /API/用户->/API/数据/用户
    • /API/用户类型->/API/字典/用户类型
    • /API/角色->/API/数据/角色
    • /API/角色类型->/API/字典/角色类型

    通过这种方法,您将不必损害任何关注点,如维护或客户端更改。