假设我们有5个服务(用户和授权,产品,订单,库存,历史记录)公开基于REST的API,并通过这些暴露的API在内部服务之间进行内部通信。现在,在Microeservice架构模式中开发这些应用程序时,这些将是不同的单独服务,它们将自我依赖并通过REST /队列相互通信。将请求路由到微服务架构中的相关服务的方法
首先让我们考虑一下,我们正在单个节点上部署它,但现在所有5个服务都只部署在这个单一节点上。因此,一种方法是
- (理想)若要通过Netflix的工具链(尤里卡)服务发现和注册机制或通过Zookeper认证和授权例如:/ API/V1 /后请求定向到相关服务产品/ {id}被定向到产品服务,/ api/v1/order/{id}被定向到定购服务等等。
- 另一个(虽然不是服务分布在多个节点上的场景的正确选择,但考虑如果我们在单个节点上拥有所有服务并计划快速上线,然后在下一个阶段进行下去对微服务的发现/注册,API网关,断路器方法),其中我们开发所有服务作为单独的Web应用程序部署为在tomcat(基于Spring的应用程序)中的单个战争,并让tomcat处理基于URL的重定向,例如https://ip:port/产品服务/api/v1/products/{id}由tomcat重定向到productservice webapp等。
请问选项2将是一个可行的选择与发展作为一个单独的Web应用程序不同的服务现场去,自力更生与部署在一个Tomcat实例它自己的架构和UI层被消耗和再下一阶段使用个人和单独服务的基本代码,并转向发现/注册方法。
,但我在选项2其中每个服务是一个独立的战争(没有发现/注册表)预见的挑战是路由 - 为每个请求如主入口https://ip:port/productservice/API/v1/products/{id}在去productservice webapp需要通过一个“认证服务”应用程序,然后被路由到适当的服务,并在单独的战争机制中处理此路由(尽管在单个实例中)具有以下选项
- 每个请求都需要登录到认证服务应用程序(如何?可以是URL重定向),然后编写一些路由逻辑将认证请求发送到基于REST的所需应用(服务)。此路由可以是基于骆驼的或基于数据库的 - 分析字符串并调用所需服务的REST API。认证应用程序将作为一个API网关。
- 其他是你提到的那个(队列丢失)。所有请求都登录到身份验证服务应用程序(如何?可以是URL重定向),然后写入专用于每个服务的单个队列,其中每个服务都订阅了它的特定队列。
同意你的观点,在未经服务发现的情况下在单独的应用程序中预见的挑战更新帖子是如何在每个请求通过“身份验证服务”应用程序进行身份验证后路由到适当的服务 –