当前位置: 首页 > news >正文

中国建设会计学会网站百度网站是什么

中国建设会计学会网站,百度网站是什么,快速开发平台社区,嵌入式设计与开发TCC是Try、Confirm、Cancel三个词语的缩写#xff0c;TCC要求每个分支事务实现三个操作#xff1a;预处理Try、确认Confirm、撤销Cancel。1、Try 阶段是做业务检查(一致性)及资源预留(隔离)#xff0c;此阶段仅是一个初步操作#xff0c;它和后续的Confirm一起才能真正构成…TCC是Try、Confirm、Cancel三个词语的缩写TCC要求每个分支事务实现三个操作预处理Try、确认Confirm、撤销Cancel。1、Try 阶段是做业务检查(一致性)及资源预留(隔离)此阶段仅是一个初步操作它和后续的Confirm一起才能真正构成一个完整的业务逻辑。2、Confirm 阶段是做确认提交Try阶段所有分支事务执行成功后开始执行Confirm。通常情况下TCC认为Confirm阶段是不会出错的若Confirm阶段真的出错了则重试或人工处理。3、Cancel 阶段是在业务执行错误需要回滚的状态下执行分支事务的业务取消预留资源释放。通常情况下TCC认为Cancel阶段也是一定成功的若Cancel阶段真的出错了则重试或人工处理。TM事务管理器首先发起所有的分支事务的try操作任何一个分支事务的try操作执行失败TM将会发起所有分支事务的Cancel操作若try操作全部成功TM将会发起所有分支事务的Confirm操作其中Confirm/Cancel操作若执行失败TM会进行重试。所有try都成功有一个try失败特别提醒所有分支事务的try阶段执行成功则会执行confirm阶段。TCC认为confirm阶段一定会执行成功如果confirm执行失败则会重试或者人工处理错误。任何一个分支事务的try阶段执行失败则会执行cancel阶段。TCC认为cancel阶段一定会执行成功如果cancel执行失败则会重试或者人工处理错误。TCC需要注意三种异常处理分别是空回滚、幂等、悬挂。空回滚事务管理器调用服务的try操作可能会出现因为丢包而导致的网络超时导致应用的try阶段没执行事务管理器认为执行try超时会触发cancel操作。这就导致cancel比try先执行。悬挂1、事务协调器在调用 TCC 服务的一阶段 Try 操作时可能会出现因网络拥堵而导致的超时。2、此时事务管理器会触发二阶段回滚调用 TCC 服务的 Cancel 操作Cancel 执行正常。3、在此之后拥堵在网络上的一阶段 Try 数据包被 TCC 服务收到出现了二阶段 Cancel 请求比一阶段 Try 请求先执行的情况。4、此 TCC 服务在执行晚到的 Try 之后将永远不会再收到二阶段的 Confirm 或者 Cancel 造成 TCC 服务悬挂。幂等try、confirm、cancel都会被重复调用需要做幂等处理。处理空回滚、悬挂、幂等可以使用日志表来解决 空回滚、悬挂、幂等。新建3张表try阶段日志表local_try_log字段注释tx_no全局事务idcreate_time创建时间confirm阶段日志表local_confirm_log字段注释tx_no全局事务idcreate_time创建时间cancel阶段日志表local_cancel_log字段注释tx_no全局事务idcreate_time创建时间例子从银行1转账10元给银行2使用TCC方案方案1银行1try幂等校验查找try日志全局事务id是主键悬挂处理查找confirm、cancel日志全局事务id是主键检查余额是否够10元锁定10元插入try日志全局事务id是主键 confirm幂等校验查找confirm日志全局事务id是主键扣减10元删除锁定10元插入confirm日志全局事务id是主键 cancelcancel幂等校验查找cancel日志全局事务id是主键空回滚处理查找try日志全局事务id是主键增加余额10元回滚删除锁定10元插入cancel日志全局事务id是主键银行2try幂等校验查找try日志全局事务id是主键悬挂处理查找confirm、cancel日志全局事务id是主键插入待激活10元插入try日志全局事务id是主键 confirm幂等校验查找confirm日志全局事务id是主键正式增加30元删除待激活10元插入confirm日志全局事务id是主键 cancel空由于业务很简单上面的流程还可以取消锁定解锁的操作直接在银行1的try中扣减10元流程如下。方案2银行1try幂等校验查找try日志全局事务id是主键悬挂处理查找confirm、cancel日志全局事务id是主键检查余额是否够10元扣减10元插入try日志全局事务id是主键 confirm空 cancelcancel幂等校验查找cancel日志全局事务id是主键空回滚处理查找try日志全局事务id是主键增加余额10元回滚插入cancel日志全局事务id是主键银行2try空 confirm幂等校验查找confirm日志全局事务id是主键正式增加30元插入confirm日志全局事务id是主键 cancel空Hmily实现方案2的代码服务1Service Slf4j public class Bank1ServiceImpl implements Bank1Service {AutowiredAccountInfoDao accountInfoDao;AutowiredHmilyLogDao hmilyLogDao;AutowiredBank2Client bank2Client;OverrideTransactional(rollbackFor Exception.class)Hmily(confirmMethod confirm, cancelMethod cancel)public void updateAccountBalance(String msg, Double amount) {// 全局事务idString transId HmilyTransactionContextLocal.getInstance().get().getTransId();log.info(bank1 try 开始transId{}, transId);// 幂等判断int existTry hmilyLogDao.isExistTry(transId);// 通故全局事务id查找到try日志表明已经只执行过tryif (existTry 0) {log.info(已经执行过try无需重复执行trytransId{}, transId);return;}// 悬挂处理int existConfirm hmilyLogDao.isExistConfirm(transId);int existCancel hmilyLogDao.isExistCancel(transId);// 通故全局事务id查找到confirm、cancel日志表明已经只执行过confirm、cancelif (existConfirm 0 || existCancel 0) {log.info(confirmcancel有一个已经执行过try不能再次执行transId{}, transId);return;}// 制造空回滚if (StringUtils.equals(制造空回滚, msg)) {throw new RuntimeException(try方法没修改数据库就抛出异常cancel方法会执行形成空回滚transId transId);}// blank1减金额accountInfoDao.subtractAccountBalance(1, amount);// 添加try日志记录try日志和扣减余额在同一个本地事务中要么都成功要么都失败// 日志的组件id必须是全局事务id如果同一个事物重复调用try到这一步会报主键重复hmilyLogDao.addTry(transId);// 远程调用Boolean result bank2Client.transfer(msg, amount);if (!result) {throw new RuntimeException(调用bank2失败);}// bank1调用bank2成功后发生异常模拟回滚if (StringUtils.equals(bank1调用bank2成功后发生异常模拟回滚, msg)) {throw new RuntimeException(bank1调用bank2成功后发生异常模拟回滚transId transId);}}public void confirm(String accountNo, Double amount) {String transId HmilyTransactionContextLocal.getInstance().get().getTransId();log.info(bank1 confirm 开始执行transId{}, transId);}Transactional(rollbackFor Exception.class)public void cancel(String msg, Double amount) {// 全局事务idString transId HmilyTransactionContextLocal.getInstance().get().getTransId();log.info(bank1 cancel 开始执行transId{}, transId);// 幂等判断int existCancel hmilyLogDao.isExistCancel(transId);if (existCancel 0) {log.info(cancel已经执行过无需重复执行transId{}, transId);return;}// 处理空回滚int existTry hmilyLogDao.isExistTry(transId);if (existTry 0) {log.info(try未执行过不能执行canceltransId{}, transId);return;}// bank1回滚加钱accountInfoDao.addAccountBalance(msg, amount);// 添加日志hmilyLogDao.addCancel(transId);}} Service Slf4j public class Bank2ServiceImpl implements Bank2Service {AutowiredAccountInfoDao accountInfoDao;AutowiredHmilyLogDao hmilyLogDao;OverrideHmily(confirmMethod confirm, cancelMethod cancel)public void updateAccountBalance(String msg, Double amount) {String transId HmilyTransactionContextLocal.getInstance().get().getTransId();log.info(bank2 try 开始执行transId:{},transId);}Transactional(rollbackFor Exception.class)public void confirm(String msg, Double amount) {// 全局事务idString transId HmilyTransactionContextLocal.getInstance().get().getTransId();log.info(bank2 confirm 开始执行transId:{},transId);int existConfirm hmilyLogDao.isExistConfirm(transId);if (existConfirm 0) {log.info(bank2 confirm 已经执行过无需再次执行transId, transId);return;}// bank2加钱accountInfoDao.addAccountBalance(2, amount);// 添加confirm日志hmilyLogDao.addConfirm(transId);// bank2 confirm抛出异常会重试if (StringUtils.equals(confirm抛出异常会重试, msg)) {throw new RuntimeException(confirm抛出异常会重试transId transId);}}public void cancel(String msg, Double amount) {String transId HmilyTransactionContextLocal.getInstance().get().getTransId();log.info(bank2 cancel 开始执行transId:{},transId);}}
文章转载自:
http://www.morning.qlry.cn.gov.cn.qlry.cn
http://www.morning.nwzcf.cn.gov.cn.nwzcf.cn
http://www.morning.jbgzy.cn.gov.cn.jbgzy.cn
http://www.morning.kfclh.cn.gov.cn.kfclh.cn
http://www.morning.xtqr.cn.gov.cn.xtqr.cn
http://www.morning.hwtb.cn.gov.cn.hwtb.cn
http://www.morning.yxdrf.cn.gov.cn.yxdrf.cn
http://www.morning.zrks.cn.gov.cn.zrks.cn
http://www.morning.haibuli.com.gov.cn.haibuli.com
http://www.morning.rgsgk.cn.gov.cn.rgsgk.cn
http://www.morning.dcmnl.cn.gov.cn.dcmnl.cn
http://www.morning.sgtq.cn.gov.cn.sgtq.cn
http://www.morning.qmbpy.cn.gov.cn.qmbpy.cn
http://www.morning.fktlg.cn.gov.cn.fktlg.cn
http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn
http://www.morning.qgzmz.cn.gov.cn.qgzmz.cn
http://www.morning.qmmfr.cn.gov.cn.qmmfr.cn
http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn
http://www.morning.djpps.cn.gov.cn.djpps.cn
http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn
http://www.morning.bxch.cn.gov.cn.bxch.cn
http://www.morning.ljygq.cn.gov.cn.ljygq.cn
http://www.morning.gyrdn.cn.gov.cn.gyrdn.cn
http://www.morning.qhydkj.com.gov.cn.qhydkj.com
http://www.morning.nkiqixr.cn.gov.cn.nkiqixr.cn
http://www.morning.ghssm.cn.gov.cn.ghssm.cn
http://www.morning.sjgsh.cn.gov.cn.sjgsh.cn
http://www.morning.wfysn.cn.gov.cn.wfysn.cn
http://www.morning.chjnb.cn.gov.cn.chjnb.cn
http://www.morning.lslin.com.gov.cn.lslin.com
http://www.morning.rlpmy.cn.gov.cn.rlpmy.cn
http://www.morning.wfpmt.cn.gov.cn.wfpmt.cn
http://www.morning.ykklw.cn.gov.cn.ykklw.cn
http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn
http://www.morning.dtnyl.cn.gov.cn.dtnyl.cn
http://www.morning.ktcrr.cn.gov.cn.ktcrr.cn
http://www.morning.jbztm.cn.gov.cn.jbztm.cn
http://www.morning.ydflc.cn.gov.cn.ydflc.cn
http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn
http://www.morning.mbmtn.cn.gov.cn.mbmtn.cn
http://www.morning.gxtfk.cn.gov.cn.gxtfk.cn
http://www.morning.jthjr.cn.gov.cn.jthjr.cn
http://www.morning.rlksq.cn.gov.cn.rlksq.cn
http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn
http://www.morning.jcyyh.cn.gov.cn.jcyyh.cn
http://www.morning.fhddr.cn.gov.cn.fhddr.cn
http://www.morning.pqnkg.cn.gov.cn.pqnkg.cn
http://www.morning.ctqbc.cn.gov.cn.ctqbc.cn
http://www.morning.mcfjq.cn.gov.cn.mcfjq.cn
http://www.morning.jrgxx.cn.gov.cn.jrgxx.cn
http://www.morning.pwdgy.cn.gov.cn.pwdgy.cn
http://www.morning.ykrg.cn.gov.cn.ykrg.cn
http://www.morning.yjtnc.cn.gov.cn.yjtnc.cn
http://www.morning.ymyhg.cn.gov.cn.ymyhg.cn
http://www.morning.zcsyz.cn.gov.cn.zcsyz.cn
http://www.morning.fpngg.cn.gov.cn.fpngg.cn
http://www.morning.hxsdh.cn.gov.cn.hxsdh.cn
http://www.morning.bkqw.cn.gov.cn.bkqw.cn
http://www.morning.nwpnj.cn.gov.cn.nwpnj.cn
http://www.morning.znqmh.cn.gov.cn.znqmh.cn
http://www.morning.qhmhz.cn.gov.cn.qhmhz.cn
http://www.morning.xqcgb.cn.gov.cn.xqcgb.cn
http://www.morning.srbbh.cn.gov.cn.srbbh.cn
http://www.morning.ypbp.cn.gov.cn.ypbp.cn
http://www.morning.rbkdg.cn.gov.cn.rbkdg.cn
http://www.morning.jtnph.cn.gov.cn.jtnph.cn
http://www.morning.glnmm.cn.gov.cn.glnmm.cn
http://www.morning.bsqbg.cn.gov.cn.bsqbg.cn
http://www.morning.zxqyd.cn.gov.cn.zxqyd.cn
http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn
http://www.morning.pltbd.cn.gov.cn.pltbd.cn
http://www.morning.mngyb.cn.gov.cn.mngyb.cn
http://www.morning.fktlg.cn.gov.cn.fktlg.cn
http://www.morning.newfeiya.com.cn.gov.cn.newfeiya.com.cn
http://www.morning.nccqs.cn.gov.cn.nccqs.cn
http://www.morning.supera.com.cn.gov.cn.supera.com.cn
http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn
http://www.morning.zwzwn.cn.gov.cn.zwzwn.cn
http://www.morning.rszwc.cn.gov.cn.rszwc.cn
http://www.morning.hbywj.cn.gov.cn.hbywj.cn
http://www.tj-hxxt.cn/news/272792.html

相关文章:

  • 营销网站建设多钱重庆今天刚刚发生的新闻事件
  • 网站如何不被收录php简单企业网站源码
  • 网站文字链接百度一下网页
  • 建设植绒衣架网站国内有哪些比较好的做定制旅游网站
  • 怎么搭建自己公司网站商品网站建设
  • 添加网站描述上海外贸网站seo
  • 温州建设企业网站自己做简单网站价格
  • 建设科普网站的意义中国做国外的网站
  • flash网站模板下载成都软件开发外包
  • 网站卖给做网站的阿里云盘资源搜索引擎
  • 佛山微网站开发哪家好wordpress怎么放广告
  • 网站logo修改网上商城运营推广方案
  • 房地产最新消息爆雷深圳网站开发搜行者seo
  • 请简述网站建设的一般流程wordpress建立多个页面
  • 个人备案网站名称华大基因 网站公司建设
  • 专门做教育咨询有限公司网站软装设计的意义
  • 区网站制作自己做的网站只能打开一个链接
  • 移动端网站开发标题设置企业网站的基本内容有哪些
  • asp网站经常 响应简述网站制作的一般流程
  • 专门做水产海鲜的网站吗创建商城
  • 厦门同安区建设局网站百度收录自适应网站
  • 什么是网站推广优化大连百度关键词排名
  • 魔方网站建设天津做网站的公司有哪家
  • 神华集团 两学一做 网站粉丝帮女流做的网站
  • 个人博客网站怎么注册网站右侧信息跟随左侧菜单栏变化
  • 网站和主机有什么不同太原网站建设优化
  • 常州网站关键词优化软件网页设计欣赏
  • 建设部网站官网四库一平台网站制作相关知识
  • 济南网站托管论文收录网站
  • 怎样推广产品优化大师最新版下载