【发布时间】:2018-11-13 15:45:32
【问题描述】:
我们正在将单体应用程序拆分为微服务。这将是一个渐进的过程,这意味着最初我们将从 2 个微服务开始,稍后我们会将它们拆分成更多,依此类推。
monoligh 公开了一个 REST API,它提供了用于管理数十个不同实体(例如用户、用户类型、角色、角色类型等)的方法。单体应用程序只公开了一个 REST API 消费者——一个 Javascript 前端应用程序。
我们目前正在研究如何配置 API 网关 (Zuul) 的两种可能性:
URL 将包含微服务名称,例如
/api/dictionary将服务于/api/dictionary/user_types和/api/dictionary/role_types,而/api/data将服务于/api/data/users和/api/data/roles。这意味着随着我们创建更多微服务,URL 会随着时间而改变。每次我们这样做时,都必须更改消费者(前端)。URL 将基于实体名称,例如
/api/users、/api/user_types、/api/roles和/api/role_types。缺点是 Zuul 配置必须包含系统管理的每个实体的显式配置。
以上哪种方法是正确的?
【问题讨论】:
-
我建议使用第一种方法,因为它可以让您轻松地从 url 本身识别微服务。其次,您将减少维护新端点的服务注册表的工作量。可能是第二个方法将帮助您在消费者方面没有或很少有更改,因为他们不必更改 URL。但是第二种方法在短期内很好,但从长远来看,从我的角度来看,第一种方法更好。
标签: microservices netflix-zuul api-gateway