望各位大仙不吝赐教!!
需求如下:
 前台画面(.net)的一个按钮执行时会同时访问(https)10台服器,每台服务器有相应的应用程序(JAVA)和DB,每台service会做DB登陆,更新,消除等等操作,成功或失败时会将相应的消息返回前台。
如何解决其中任一台service处理失败时将其他DB的数据rollback掉。(即所有处理成功时才
commit;)又 所有service处理成功后执行commit操作时其中某些service突然断掉时(只commit了8台等),数据不统一的问题
(暂不考虑用batch来实现数据的同期)

解决方案 »

  1.   

    如果能将所有的操作通过数据库的分布式事务去管理,那么就好办。
    否则,如果需要自己来实现类似的事务的东西,你必须所有的操作
    有相应的可逆操作(类似oracle有undo这个东西一样)。
      

  2.   

    都是oracle吗?考虑用db link,交给一台数据库来与其他数据库通信
      

  3.   


    每台service的处理不一样,似乎很难实现
      

  4.   

    自己写一个日志表,文本或XML都可以,记录每个数据库的是否开始事务,完成数据更新后,再统一提交事务。如果提交发生错误,再回滚。
      

  5.   


    --最节约成本的方法,你在DB中创建一个事务管理表,把每一台service的事务都进行记录,通过指定特定的主键来管理这个事务表应该就可以了!