人工智能

女朋友问敖丙:什么是分布式事务?

时间:2010-12-5 17:23:32  作者:IT科技   来源:应用开发  查看:  评论:0
内容摘要:复制协调者: writeSTART_2PCtolocallog;//开始事务 multicastVOTE_REQUESTtoallparticipants;

女朋友问敖丙:什么是分布式事务?
复制协调者:      write START_2PC tolocal log; //开始事务      multicast VOTE_REQUEST toall participants; //广播通知参与者投票      while notall votes have been collected {           wait forany incoming vote;          if timeout {  //协调者超时              write GLOBAL_ABORT tolocal log; //写日志              multicast GLOBAL_ABORT toall participants; //通知事务中断              exit;          }          record vote;      }      //如果所有参与者都ok      if all participants sent VOTE_COMMIT and coordinator votes COMMIT {           write GLOBAL_COMMIT tolocal log;          multicast GLOBAL_COMMIT toall participants;      } else {           write GLOBAL_ABORT tolocal log;          multicast GLOBAL_ABORT toall participants;      }  参与者:      write INIT tolocal log; //写日志      wait for VOTE_REQUEST from coordinator;      if timeout {  //等待超时          write VOTE_ABORT tolocal log;          exit;      }      if participant votes COMMIT {           write VOTE_COMMIT tolocal log; //记录自己的女朋决策          send VOTE_COMMIT to coordinator;          wait for DECISION from coordinator;          if timeout {               multicast DECISION_REQUEST to other participants; //超时通知              wait until DECISION is received;  /* remain blocked*/              write DECISION tolocal log;          }          if DECISION == GLOBAL_COMMIT              write GLOBAL_COMMIT tolocal log;          else if DECISION == GLOBAL_ABORT              write GLOBAL_ABORT tolocal log;      } else {           write VOTE_ABORT tolocal log;          send VOTE_ABORT to coordinator;      }  每个参与者维护一个线程处理其它参与者的服务器托管DECISION_REQUEST请求:      while true {           wait until any incoming DECISION_REQUEST is received;          read most recently recorded STATE from the local log;          if STATE == GLOBAL_COMMIT              send GLOBAL_COMMIT to requesting participant;          else if STATE == INIT or STATE == GLOBAL_ABORT;              send GLOBAL_ABORT to requesting participant;          else             skip;  /* participant remains blocked */      }  1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.54.55.56.57.58.源码库
copyright © 2025 powered by 益强资讯全景  滇ICP备2023006006号-31sitemap