协调同步系统中的数据

时间:2009-04-08 21:32:14

标签: biztalk distributed soa

我的情况是,单个Oracle系统是两个单独的CRM系统(PeopleSoft& Siebel)的数据主机。 Oracle系统向BizTalk发送CRUD消息,以获取客户数据,库存数据,产品信息和产品定价。 BizTalk格式化并将消息转发给PeopelSoft& Siebel Web服务可以采取行动。在数据初始同步之后,正在进行的操作已经创建了一种情况,即尽管数据成功传送,但是在远程Siebel和PeopleSoft系统中数据不准确(这是关于这些系统返回'成功时这些系统意味着什么的另一种说法'到BizTalk)。

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

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

其他信息

那为什么系统不同步? Whenevr是一个目标系统,它已经收到了消息,它意味着很多东西。有时一个HTTP 200意味着我已经得到它并把它放在一个临时表中,我会稍微提交它。有时这是成功的,有时它不适用于各种数据问题。有时,HTTP 200意味着...是的,我收到并发布了数据。使用HTTP,可能存在ordere dlivery的问题。所有这些问题都可以通过前期的大量建筑规划来解决。它没有完成。没有更新/创建时间戳来防止无序传递踩到数据。从destinatin系统没有完整的往返数据通信确认。所有这些都会导致事情失去同步。

1 个答案:

答案 0 :(得分:1)

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

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

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

根据您的批量对帐的想法,我已经看到,特别是在金融服务领域,弥补交易错误是很常见的。