2014-12-02 88 views
0

我是一个拥有多个不同部门的大型组织的一部分。我们称他们为A,B和C. 每个部门都有自己的系统,但有些东西是根据系统共享的。有一个报告部门需要查看来自不同部门系统的所有数据的汇总。建筑反馈

我们从每个部门开始,每个部门都有自己的SQL数据库和API以及一个前端单页面应用程序。我们添加了一个中央数据库来跟踪诸如系统之间共享的用户,电话,地址,EmailAddresses等内容。

随着我们的发展,我们最大的难点之一就是保持一切同步。例如,我们有一个系统从中央表中删除了一个用户,或将它们合并在一起(这是一种可能性),从而影响了其他系统,因为内部人员引用了被删除的中央人员。我们的其他系统之一决定他们不希望受到系统间更改的影响,并且任何集中存储的电话号码的删除都不会影响他们。

我想弄清楚处理这种情况的最佳方法。我正在考虑一个酒吧子场景,在这个场景中,每个系统都有自己的一套允许说电话,地址,电子邮件地址和他们通过rabbitMQ发布更改的时间。其他系统可以订阅他们,如果他们想要并相应地处理更改。

这一切听起来不错,但我们如何跟踪系统中的用户进行报告。我们希望使用跨系统一致的UserID。比方说,一个用户进入系统A,他从一个中心位置获取一个全球ID,一个月后,同一个用户进入系统B.鉴于我们有他们的电子邮件地址,所以系统B可以知道他们的相关信息,但是如何找到这些信息它是查询中央系统,还是发送诸如“谁在他们的系统中拥有此用户”等信息并等待来自任何给定系统的答案。

无论如何,我将不胜感激关于此事的任何反馈。

感谢

回答

1

我建议你读几本书对这个或扫描网页:

  • 领域驱动设计
  • 企业应用架构
  • CQRS的模式

你在正确的轨道wrt使用事件驱动架构(服务总线)。