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

怎样查看网站的权重企业vi设计的几大特点

怎样查看网站的权重,企业vi设计的几大特点,网站托管 建设方案,有没有做字的网站redis系列整体栏目 内容链接地址【一】分布式事务之2pc两阶段提交https://zhenghuisheng.blog.csdn.net/article/details/142406325 分布式事务之2pc两阶段提交 一#xff0c;分布式事务之2pc两阶段提交1#xff0c;两阶段提交(2pc)2#xff0c;2pc两阶段提交实现思路3…redis系列整体栏目 内容链接地址【一】分布式事务之2pc两阶段提交https://zhenghuisheng.blog.csdn.net/article/details/142406325 分布式事务之2pc两阶段提交 一分布式事务之2pc两阶段提交1两阶段提交(2pc)22pc两阶段提交实现思路3代码模拟两阶段提交4两阶段提交的缺陷 一分布式事务之2pc两阶段提交 在了解分布式事务之前需要先了解什么事本地事务本地事务指的是在单jvm进程下不涉及到分布式场景下的事务。而在分布式场景下如微服务架构分库分表这些情况下那么在一个方法中就可能操作多个数据库那么本地事务是不能解决多个事务的提交以及回滚的因此就引入了分布式事务。 1两阶段提交(2pc) 在解决分布式事务之前先了解一下什么是两阶段提交。假设有一个场景就是一个下单和扣减库存的场景假设有两个库一个是order订单表一个是stock库存表 现在在分布式场景中为了保证事务的原子性要么同时成功要么同时失败。 那么如果是让我们自定义区实现一个解决这种分布式方案的话那么其实也很简单其大概实现思路如下首先拿到两个事务的预提交的状态然后同时判断本地事务状态是否执行成功执行成功则提交事务有一个不成功则同时回滚事务 //订单创建和更新库存预提交 int orderStatus order.prepare(); int stockStatus stock.prepare(); //判断二者之间的状态是否都为1 if(orderStatus stockStatus){//同时提交order.commit();stock.commit(); }else{//同时回滚order.rollback();stock.rollback(); }其两阶段提交的本质也很好理解就是分为两个阶段一个是准备阶段协调者会去每个本地事务拿到每个预提交的返回值然后根据返回值进行判断是否都为ok当都为ok时则执行commit操作否则执行rollback操作 22pc两阶段提交实现思路 在介绍两阶段提交之前需要先知道内部的一些名词 Coordinator 协调者又被称为事务管理器用于对所有本地事务进行收集并用于控制所有本地事务进行准备操作、提交事务和回滚事务Participants参与者又被称为资源管理器用于管理所有的本地事务 在了解完本地名词之后再来查看2pc的两阶段操作是如何执行的 首先第一阶段就是协调者去通知各个参与者进行事务的预提交参与者在接收到指令后开始预提交随后向协调者发送应答如果可以提交则返回ok肯定答复如果出现其他情况则返回error否定答复第二阶段就是在协调者接收到全部的参与者的答复之后根据返回的应答消息进行判断如果返回的消息都是肯定的答复ok那么就执行commit提交的操作这样所有参与者的事务全部同时进行提交如果返回的应答消息有一个给了否定那么协调者则发起rollback回滚的操作这样所有的参与者都得回滚 两阶段提交完全依赖与参与者的本地事务的acid通过每个参与者的事务从而保证所有事务的执行 3代码模拟两阶段提交 接下来通过一段代码来模拟两阶段提交先获取订单表的连接然后获取XAResource资源实例并且设置对应的事务id让资源管理器绑定事务管理器然后执行预提交操作最后收集两个与提交的结果通过判断结果的value值在如果都是肯定答复的话那么二者都执行commit提交操作否则执行rollback回滚操作 public static void main(String[] args) throws SQLException {//true表示打印XA语句,用于调试boolean logXaCommands true;// 获得资源管理器操作接口实例 RM1Connection conn1 DriverManager.getConnection(jdbc:mysql://localhost:3306/db_order, root, root);XAConnection xaConn1 new MysqlXAConnection((com.mysql.jdbc.Connection) conn1, logXaCommands);XAResource rm1 xaConn1.getXAResource();// 获得资源管理器操作接口实例 RM2Connection conn2 DriverManager.getConnection(jdbc:mysql://localhost:3306/db_storage, root, root);XAConnection xaConn2 new MysqlXAConnection((com.mysql.jdbc.Connection) conn2, logXaCommands);XAResource rm2 xaConn2.getXAResource();// AP请求TM执行一个分布式事务TM生成全局事务idbyte[] gtrid g12345.getBytes();int formatId 1;try {// 分别执行RM1和RM2上的事务分支// TM生成rm1上的事务分支idbyte[] bqual1 b00001.getBytes();Xid xid1 new MysqlXid(gtrid, bqual1, formatId);// 执行rm1上的事务分支rm1.start(xid1, XAResource.TMNOFLAGS);//One of TMNOFLAGS, TMJOIN, or TMRESUME.PreparedStatement ps1 conn1.prepareStatement(INSERT into order_tbl(user_id,commodity_code,count,money,status) VALUES (1001,2001,2,10,1));ps1.execute();rm1.end(xid1, XAResource.TMSUCCESS);// TM生成rm2上的事务分支idbyte[] bqual2 b00002.getBytes();Xid xid2 new MysqlXid(gtrid, bqual2, formatId);// 执行rm2上的事务分支rm2.start(xid2, XAResource.TMNOFLAGS);PreparedStatement ps2 conn2.prepareStatement(update stock_tbl set countcount-2 where commodity_code2001);ps2.execute();rm2.end(xid2, XAResource.TMSUCCESS);// 两阶段提交// phase1询问所有的RM 准备提交事务分支int rm1_prepare rm1.prepare(xid1);int rm2_prepare rm2.prepare(xid2);// phase2提交所有事务分支boolean onePhase false;//TM判断有2个事务分支所以不能优化为一阶段提交if (rm1_prepare XAResource.XA_OK rm2_prepare XAResource.XA_OK) {//所有事务分支都prepare成功提交所有事务分支rm1.commit(xid1, onePhase);rm2.commit(xid2, onePhase);} else {//如果有事务分支没有成功则回滚rm1.rollback(xid1);rm2.rollback(xid2);}} catch (XAException e) {// 如果出现异常也要进行回滚e.printStackTrace();}}4两阶段提交的缺陷 虽说两阶段提交确实可以实现分布式事务但是两阶段提交也存在着一定的缺陷。 事务管理器高可用首先是事务管理器收集信息的问题在收集时如何保证高可用问题比如可以通过redis或者mysql将数据收集然后再发出相关的指令但是如果此时宕机要如何保证因此可以做一些集群等从而解决事务管理器的单点故障问题不会让整个系统卡死 同步阻塞问题由于第一阶段和第二阶段时一个完整的事务因此只有第二阶段执行完第一段才能释放接连如果出现延迟情况那么就可能造成连接延迟阻塞等问题如果大量的连接进来那么就可能在成整个系统阻塞 提交/回滚不一致问题由于在整个系统都是使用RPC的模式进行网络通信如上面的订单和库存系统假设订单的本地事务在预提交阶段给了一个否定消息那么订单事务和扣减库存事务都得回滚如果订单事务回滚成功但是库存事务由于网络原因回滚失败那么就造成少卖问题甚至可能会涉及到账户余额等问题。
http://www.w-s-a.com/news/520816/

相关文章:

  • 做网站美工要学什么网站推广的方法包括
  • 哪个网站可以做笔译兼职wordpress加表单
  • 百度站内搜索 wordpress微餐饮建站费用
  • 用什么做网站的访问量统计制作手工作品
  • 微信公众号搭建网站河南卫生基层系统网站建设
  • steam账号注册网站重庆手机版建站系统哪家好
  • 中新生态城建设局门户网站wordpress云盘视频播放
  • 大型网站开发基本流程wordpress记录用户搜索
  • 云服务器安装win系统做网站wordpress边栏扩大尺寸
  • 网站开发面试自我介绍软件下载网站如何建设
  • 可以做翻译任务的网站陕西省建设厅八大员证
  • 昆明 网站推广重庆网页优化seo公司
  • 网站排名下降怎么上去设计一套app页面多少钱
  • 专门用来查找网址的网站查公司名字是否被注册
  • 自己创建网站教程河南省建设厅官方网站李学军
  • 一个网站需要多少容量怎样免费设计网站建设
  • 建设工程交易中心网站12306的网站是哪个公司做的
  • 建设网站经营范围自己给公司做网站
  • 河北省住房建设厅政务网站网络营销推广的岗位职责有哪些
  • 上海网站建设优化价格孝义做网站的公司
  • 哪个公司网站做的最好义乌 网站 制作
  • 百度站长工具综合查询wordpress 上传pdf
  • 旅游短租公寓网站建设深圳龙岗招聘网
  • 做海淘是在哪个网站网络查控系统设计方案
  • o2o网站建设代理商微信公众号开发文档
  • 网站设计课程总结关于网站备案的公告
  • 网站建设与运营意义到哪查找网站域名
  • 网站及单位网站建设情况眉县住房和城市建设局网站
  • 网站是否能够被恶意镜像wordpress占用
  • 经典设计网站网站等保测评怎么做