在解耦系统之间同步数据的最佳方法是什么?

Joh*_*dol 5 application-integration synchronization eai

我已经说过2(但它们将来会变得更多)完全解耦的系统:系统A和系统B.

假设每个系统上的每条信息都有一个信息ID.没有什么能阻止信息ID在不同系统上保持一致.在所有系统中单义识别信息的是Source-informationID对.

假设我需要将一条信息从系统A导出到系统B.然后我想从系统B导出相同的信息并将其重新导入到系统A中,我需要能够识别出它是同一块信息.

在人们的经历中,这样做的最佳方式是什么?

这就是我想要做的事情:

  1. 在具有消息队列的系统之间设置消息总线.
  2. 为每个系统设置端点,这些端点将监视更改并生成包含在将被泵入队列的消息中的命令(例如,在创建/删除/更新一条信息时).
  3. 相对于create/delete/update命令将端口分配给端点,以便不依赖于系统名称,而只依赖于一般层次结构 - 这样每个系统都不需要知道其他系统.
  4. 为每个端点分配update/delete/create命令的阈值,以便过滤掉不符合阈值要求的命令,不进行处理

这并不能解决我仍然需要携带originalSource + originalSourceID的事实.

任何帮助赞赏.

Kev*_*nle 3

TibcowebMethods (现为 Software AG 的一部分)等 EAI(企业应用集成)供应商已经解决了这个问题。我以前从未使用过 Tibco,但我使用过 webMethods 来解决此类问题,因此我将只关注 webmethods。例如,在企业中,有关员工的数据可以驻留在 Active Directory 和 PeopleSoft 中。webMethods 可用于确保一个系统(应用程序)中的更改、添加、删除将实时反映在另一个系统(应用程序)中。在其他一些组织中,有关员工的数据也可能位于 Oracle 或 SQL Server 数据库中。再说一次,这不是问题。这些 EAI 工具(例如 webMethods)可以与各种后端通信。webMethods 不限于单个源和单个目标,但由于它具有发布-订阅架构,因此来自单个源的数据可以流向订阅特定信息的多个感兴趣的目标。这些产品还具有交货保证和其他功能。回到员工的例子,最终,如果做得正确,在任何给定时间,企业中的所有系统和应用程序都可以包含有关员工的相同信息,而不会出现任何差异。

因此,您将使用与 4GL 语言非常相似的 webMethods 编程,而不是使用 C# 或 Java 进行编程。我称其为编程,因为仍然涉及逻辑、循环、if then else、分支、变量、包等,但它是非常面向过程的,即根本没有 OOP 的概念。

这些 EAI 工具的构建目的有限,目的之一是轻松同步企业中不同系统之间的数据。他们的工作做得很好。

缺点是这些工具需要花费很多钱。公司在投资这些工具之前通常会制定长期战略。