java – 两个微服务器之间的通信

我正在创建一个具有微服务架构的项目。我创建了两个微服务器。

其中一个是产品实体,另一个是账单实体。他们有自己的端点,它们与网关连接在一起(我使用的是jhipster微服务架构)。

账单应该可以访问产品列表。我想知道我可以在这两个ms之间进行沟通。我心里有三种方法:

(1)从bill-ms发送请求到队列,如rabbitMQ,从产品ms获取这些产品的这些产品(我不知道这是什么瓶颈)

(2)向网关发送产品服务请求并从中获取产品(由于它们之间的数据大小,我担心延迟,因此我不直接触摸数据库,所以我一直依赖于网关)

(3)我可以用bill-ms来复制这个仓库,服务和实体(这是一个丑陋的方式,我认为它打破了ms架构的规则,维护非常困难)

如果您有任何其他方法,我感谢您与我分享。

提前致谢。

编辑

(1)现在我知道瓶颈是什么:说有3个bill-ms的实例,以及rabbitMQ如何决定哪个实例做出回应?或者我应该怎么说“给我免费的bill-ms实例来订阅来自rabbitmq的请求”来进行负载平衡。

我不知道我要回答的是正确的方法。我还在学习自己..但我可以告诉你我如何实现我的微服务尝试

首先,我开始使用基于HTTP通信的微服务器using this blog.这样做很好,但问题是,您创建了服务之间的依赖关系。服务A需要知道服务B,需要直接调用(通过服务发现等)。这是您在开发微服务时通常所要避免的。

最近我开始的另一种方法是使用消息总线。这实际上是您在问题中触及的第三个选项。

我有一个服务A,它存储人(仅举一个例子)。创建新人时,该服务的功能是:它在RabbitMQ总线上发送一个事件:personCreatedEvent。
如果有任何其他服务对这样的事件感兴趣,他们可以向他们传递。这些感兴趣的服务将他们感兴趣的相关信息保存在自己的数据存储中。

使用最后一种方法,您的服务之间没有真正的依赖关系,因为它们不直接相互通信。服务A不知道服务B,因为B只是将事件发送给RabbitMQ,无论哪个服务对这些事件感兴趣,反之亦然。

当然,您在服务上的数据存储之间存在重复。但是这也可以是有利可图的,例如服务B不需要使用与服务A相同的模式或数据存储机制。它仅以最适合该服务的方式存储相关信息。

http://stackoverflow.com/questions/36701111/communication-between-two-microservices

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:java – 两个微服务器之间的通信