锁定老帖子 主题:如何在web系统中实现跨系统调用与事务补偿
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (5)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-11
可以考虑分布式多version版本的数据来实现最终状态一致性
taolei0628提的方案还是比较靠谱,实现成本相对比较低。不过仔细抽象一下,你会发现就是一数据多version。 现在就A,B两个系统还好解决,如果涉及多方系统处理时,需要再重新审视下方案 |
|
返回顶楼 | |
发表时间:2011-07-12
agapple 写道 可以考虑分布式多version版本的数据来实现最终状态一致性
taolei0628提的方案还是比较靠谱,实现成本相对比较低。不过仔细抽象一下,你会发现就是一数据多version。 现在就A,B两个系统还好解决,如果涉及多方系统处理时,需要再重新审视下方案 在分布式文件系统里的多Version允许多个客户端(同时,自由)写入数据,每次写入的数据用不同的version标识。而在金融交易系统里的数据状态没有那么自由,状态之间的转换也有严格要求。而且分布式分件系统还有写入慢、适合大量数据的特点,这跟金融交易系统也不一样。分布式分拣系统的数据备份也相对麻烦。恐怕分布式文件系统并不适合用于金融交易。 |
|
返回顶楼 | |
发表时间:2011-07-12
taolei0628,讲的很好!
|
|
返回顶楼 | |
发表时间:2011-07-12
凡是在金融系统里面想搞乐观锁的都可以拉出去毙了
|
|
返回顶楼 | |
发表时间:2011-07-12
我这边有个系统,,直接使用 ftp 传输 xml 文件,,因为时效性 要求不高,,
当然可以尝试SOA 的esb 等的应用,看你的开发成本了,,, |
|
返回顶楼 | |
发表时间:2011-07-12
其实就是向taolei0628说的,用业务模型去解决
|
|
返回顶楼 | |
发表时间:2011-07-12
这两天简单修改了下,首先分析解决问题产生的原因
1,B系统发生事务错误,即使用乐观锁更新数据时失败 2,B系统用户操作上某些条件下触发并发提交 直接简单修改了下: 1,在内部使用了悲观锁,mysql的悲观锁,在hibernate中使用FlushMode.UpGrade 2,在系统拦截上增加session同步锁,使用token机制防止客户端并发操作 主要的异常先就这样解决,一般情况下,B系统这个操作不会出现问题了,算是解决了问题的80%,剩下 的等用户碰到再说 顺便说下:整个项目很小,小到连修改数据库的成本都不够,因为这需要修改主要的交互逻辑。成本决定了解决方案,再者项目也运行这么多年了,懒得去动它。 还是使用taolei0628说的,用业务模型去解决,在数据模型以及实现上和现有的项目,都不是一个级别(包括需要预支付和确认支持操作,定时数据决算操作,这些在若有项目中都没有:))。 |
|
返回顶楼 | |