【问题标题】:How to build reporting in Microservices Architecture? [closed]如何在微服务架构中构建报告? [关闭]
【发布时间】:2019-03-21 04:12:03
【问题描述】:

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

我希望能指引我正确的方向。

【问题讨论】:

  • 假设你调用了2个不同的API(服务)来获取报表数据,你需要对报表数据进行复杂的合并吗?
  • 是的。报告需要来自许多服务的数据,还需要合并从不同服务传输的数据。 :-)
  • 也许可以从您的微服务事件流中构建一个集成的数据集市或仓库。就像您如何将外键信息同步到其他服务一样,您将需要的数据拉入并集成到 Mart 中。必须以某种方式限制集市并存档数据以保持其良好运行。

标签: microservices reporting


【解决方案1】:

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

方法 1 查询微服务 dbs(不是首选方法)

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

方法 2 事件溯源/CQRS

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

方法 3 具有只读副本

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

【讨论】:

  • 你能多谈谈方法 2,我正在用事件实现物化视图,我面临的主要问题是需要大量事件来保持数据同步。
猜你喜欢
  • 1970-01-01
  • 2021-02-16
  • 2014-11-25
  • 2019-05-28
  • 2017-06-09
  • 2020-02-07
  • 2014-01-08
  • 2020-06-23
  • 2020-04-07
相关资源
最近更新 更多