如何在微服务架构中构建报告?

A. *_*med 7 reporting microservices

在围绕微服务架构做POC时;我需要解释的挑战之一是如何以有效的方式从不同服务获取报告数据?

我将不胜感激引导我朝着正确的方向前进。

Imr*_*had 3

如果数据跨越多个微服务,那么这取决于业务用例。我认为有几种方法可以做到这一点

方法 1 查询微服务数据库(不是首选方法)

如果您的微服务负载不是非常密集,那么您可以在非高峰时间查询所有服务数据库中的数据并将记录插入到仓库数据库中。这不是首选方法,因为您仍然会给服务带来额外的负载,但它更容易。此外,报告数据可能不是实时的。

方法 2 事件溯源/CQRS

这种方法是非常优选的,因为您的写入和读取模型是完全分开的。简而言之,如果有效的话,由不同微服务生成的事件也将更新称为物化视图的读取模型。如果您的报告数据需要接近实时的数据,那么这就是前进的方向。您可以根据需要塑造报告模型,并且可以使用事件创建多个报告模型。但这是复杂的方法,需要相应的应用程序设计。然而好处是数不胜数的。如果您感兴趣,您可能想了解有关事件溯源和 CQRS 的更多信息。

方法 3 有只读副本

如果您使用云服务,您可以创建数据库的只读副本,并将其用于报告。这是被广泛接受的方法,因为您不会影响事务数据库。但这可能会很昂贵,因为您要为额外的数据库付费。