论坛首页 Java企业应用论坛

如何在web系统中实现跨系统调用与事务补偿

浏览 20363 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
作者 正文
   发表时间:2011-07-11  
可以考虑分布式多version版本的数据来实现最终状态一致性

taolei0628提的方案还是比较靠谱,实现成本相对比较低。不过仔细抽象一下,你会发现就是一数据多version。

现在就A,B两个系统还好解决,如果涉及多方系统处理时,需要再重新审视下方案
0 请登录后投票
   发表时间:2011-07-12  
agapple 写道
可以考虑分布式多version版本的数据来实现最终状态一致性

taolei0628提的方案还是比较靠谱,实现成本相对比较低。不过仔细抽象一下,你会发现就是一数据多version。

现在就A,B两个系统还好解决,如果涉及多方系统处理时,需要再重新审视下方案


在分布式文件系统里的多Version允许多个客户端(同时,自由)写入数据,每次写入的数据用不同的version标识。而在金融交易系统里的数据状态没有那么自由,状态之间的转换也有严格要求。而且分布式分件系统还有写入慢、适合大量数据的特点,这跟金融交易系统也不一样。分布式分拣系统的数据备份也相对麻烦。恐怕分布式文件系统并不适合用于金融交易。
0 请登录后投票
   发表时间:2011-07-12  
taolei0628,讲的很好!
0 请登录后投票
   发表时间:2011-07-12  
凡是在金融系统里面想搞乐观锁的都可以拉出去毙了
0 请登录后投票
   发表时间:2011-07-12  
我这边有个系统,,直接使用 ftp 传输 xml 文件,,因为时效性 要求不高,,

    当然可以尝试SOA 的esb 等的应用,看你的开发成本了,,,
0 请登录后投票
   发表时间:2011-07-12  
其实就是向taolei0628说的,用业务模型去解决
0 请登录后投票
   发表时间:2011-07-12  
这两天简单修改了下,首先分析解决问题产生的原因
    1,B系统发生事务错误,即使用乐观锁更新数据时失败
    2,B系统用户操作上某些条件下触发并发提交
直接简单修改了下:
    1,在内部使用了悲观锁,mysql的悲观锁,在hibernate中使用FlushMode.UpGrade
    2,在系统拦截上增加session同步锁,使用token机制防止客户端并发操作

主要的异常先就这样解决,一般情况下,B系统这个操作不会出现问题了,算是解决了问题的80%,剩下 的等用户碰到再说

顺便说下:整个项目很小,小到连修改数据库的成本都不够,因为这需要修改主要的交互逻辑。成本决定了解决方案,再者项目也运行这么多年了,懒得去动它。

还是使用taolei0628说的,用业务模型去解决,在数据模型以及实现上和现有的项目,都不是一个级别(包括需要预支付和确认支持操作,定时数据决算操作,这些在若有项目中都没有:))。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics