0

我有一个基于几个自包含系统(微服务,如果你愿意)的架构,每个系统都拥有一组给定的数据。

我们希望通过集成所有系统来实现一个报告数据库(具有近乎实时的更新),让他们将他们的数据“投影”到集中的报告数据存储中。

我想赋予每个系统以松散耦合的方式填充其报告数据模型的责任。事实上,我想避免实现一个集中的“报告系统”,它可能可以监听来自各种系统的 MQ 消息并通过 API 从它们那里获取数据(基本上充当协调器)。

我想做相反的事情,意思是......各种系统应该有可能将他们的“数据报告投影仪”组件插入这个报告系统。

这样,我可以避免想要投影数据的各种系统与报告系统本身(反之亦然)之间的依赖关系,并将报告投影的逻辑保留在拥有系统本身中。

您是否知道我可以使用任何现有的工具来实现这种用于报告目的的集成层?

您能否建议在这种情况下可以遵循的一些架构模式或方法?

我们用于后端的主要技术是 .NET。

谢谢。

4

1 回答 1

0

一个非常广泛的问题,但我会尝试回答。

我们有一个公开连接器模板git repo 的系统。

在连接器模板代码中,有一些事件处理程序在系统内发生一些“有趣的事情”时触发。

每个需要了解这些“事件”的系统都将复制模板,在处理程序中实现自己的处理代码,然后在我们审查拉取请求后将代码提交回我们的源代码控制。然后将这些实现打包并与我们的系统一起部署。

当发生有趣的事情时,系统会查找连接器模板的所有实现,并依次针对每个事件调用该事件的相关处理程序。

处理代码是为每个集成合作伙伴定制的,他们中的大多数决定通过在自己的系统中调用 http 端点来处理这些事件。

对于您的用例,您可以采用类似的方法,但不是在报告系统中定义不同的“发生的事情”,而是连接器模板中的唯一事件是“给我最新数据”事件,它按计划触发.

每个集成合作伙伴 - 在您的用例中,负责您的源系统的团队 - 然后将实现自己的处理程序,这可能会调用源系统并获取报告系统所需的数据。

这种方法的好处:

  • 集成机制的实施取决于源系统团队
  • DTO 类型的所有权属于报告系统团队
  • 集成代码的更改将始终通过报告系统团队
于 2020-07-07T12:30:43.047 回答