减少微服务架构中的异步通信开销

时间:2017-02-20 10:21:57

标签: microservices

假设我们有一个管理用户数据的微服务U.现在我们有另外两个微服务A和B需要用户数据,这些数据通过例如消息队列。微服务A和B都基于新用户数据更新一些数据并将结果发布到另一个队列。

现在我们有另一个服务C,它取决于服务A和B的结果。服务C将聚合来自A和B的数据并发布结果。现在我们有两个问题:

  1. 服务U中的每个用户数据更新将导致服务C中的两次更新(因为它将首先触发服务A和B中的更新,并且每个更新将在C中触发一次更新)。如果在C之后的链中有更多的服务,也需要来自U的日期或基于U的数据,这可能会变得更糟。
  2. 来自A和B的数据可以基于来自U的用户数据的不同版本。如果服务C聚合两者,则可能导致数据不一致。
  3. 他们是否有针对此问题的解决方案模式?

    我目前想到的一个问题是:服务A和B必须在其结果中包含数据所基于的U版本。然后C可以等到它具有来自A和B的基于相同版本的U的一致数据版本。我看到这个解决方案的缺点是现在C必须知道A和B的数据形式是基于U的。

0 个答案:

没有答案