0

我的情况是,一个 Oracle 系统是两个独立 CRM 系统(PeopleSoft 和 Siebel)的数据主控系统。Oracle 系统向 BizTalk 发送 CRUD 消息以获取客户数据、库存数据、产品信息和产品定价。BizTalk 格式化消息并将其转发到 PeopelSoft 和 Siebel Web 服务接口以供操作。在数据初始同步后,正在进行的操作造成了一种情况,即尽管数据已成功交付,但外围 Siebel 和 PeopleSoft 系统中的数据仍不准确(这是关于这些系统在返回“成功”时的含义的另一个对话' 到 BizTalk)。

在这种分布式的面向服务的方法中,其他类似的实现如何协调系统数据?他们是否从所有系统定期转储以进行比较?是否有任何其他技术或方法来发现失败的更新并确保同步?

感谢您的想法和经验。谢谢!

附加信息

那么为什么系统会不同步呢?当目标系统向 BizTalk 确认它已收到消息时,这意味着很多事情。有时 HTTP 200 意味着我已经得到它并将它放在临时表中,然后我会提交它。有时这是成功的,有时不是因为各种数据问题。有时 HTTP 200 意味着……是的,我已经收到并提交了数据。使用 HTTP,订单交付可能会出现问题。所有这些问题都可以通过预先进行大量的架构规划来解决。它没有完成。没有更新/创建时间戳来防止无序交付踩到数据。没有来自目的地系统的数据通信的完整往返确认。所有这些都导致事情变得不同步。

4

1 回答 1

1

(对不起,这是一个答案,而不是一个评论,我的得分高达 50 分)。

数据可以在其他系统中更新还是本质上是只读的?
您能否在 BizTalk 层中实现一些进一步的验证,以确保更新不会因为数据问题而失败?您能否从目标系统中获取更新失败的任何类型的通知,这将允许您在 BizTalk 层中进行补偿?

FWIW 在这种情况下,我通常最终得到一个中央数据存储,其中至少包含来自 3 个系统的数据密钥,充当数据的新黄金存储库,但这通常是为了补偿多个更新源。似乎我们通常也操作某种用户必须维护的手动错误队列。

对于您的批量对账的想法,我已经看到补偿交易错误非常普遍,尤其是在金融服务领域。

于 2009-06-02T17:49:33.323 回答