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

上海专业做网站推广的公司seo搜索引擎优化5

上海专业做网站推广的公司,seo搜索引擎优化5,专门做库存处理的网站,重庆制作网站培训机构请围绕“论分布式事务及其解决方案”论题,依次从以下三个方面进行论述。 1、概要叙述你参与分析设计的软件项目以及你在其中所承担的主要工作。 2、请介绍4种分布式事务的解决方案及简单说明。 3、具体阐述你参与的软件项目是如何做到分布式事务的,过程中…

 

请围绕“论分布式事务及其解决方案”论题,依次从以下三个方面进行论述。

1、概要叙述你参与分析设计的软件项目以及你在其中所承担的主要工作。

2、请介绍4种分布式事务的解决方案及简单说明。

3、具体阐述你参与的软件项目是如何做到分布式事务的,过程中遇到哪些问题,是如何解决的。

摘要:

     2024年3月我很幸运参与了河南某大型电商系统的升级改造项目,在该项目中我担任系统分析及架构设计负责人,负责对系统整体进行分析及架构设计。本系统的业务涵盖了商品展示、购物车管理、订单管理、支付结算以及物流配送等多个模块,考虑到系统用户点击率及流量问题,我们团队讨论决定采用分布式架构来部署多个微服务进行业务处理,以满足系统中的高并发和可扩展的需求。本系统在实施一年多期间,每天的订单数量达到几千到几万不等,系统的稳定性及易用性受到了客户及企业的一致好评。

 正文:

      在大型电商平台升级改造项目中,其业务涵盖商品展示、购物车、订单处理、支付结算及物流配送等诸多环节,每日订单量达数十万笔。系统采用分布式微服务架构,由商品、订单、支付等多个服务构成。此项目背景下,分布式事务问题成为关键挑战。因各服务相互独立又需协同,如订单服务创建订单与支付服务完成支付,如何确保两者操作的一致性,避免出现订单创建成功但支付失败或支付成功却订单创建异常等情况,是亟待解决的核心问题。

为攻克该难题,我们采取了消息队列结合 TCC(Try - Confirm - Cancel)的综合方案。在用户下单时,订单服务率先进入 TCC 的 Try 阶段,锁定商品库存,同时将订单创建消息发送至消息队列。支付服务从队列获取消息开展支付操作,支付成功后,以消息形式通知订单服务。订单服务接收到成功通知,执行 TCC 的 Confirm 阶段,完成订单状态更新与库存实际扣减;若支付失败,则执行 Cancel 阶段,释放库存。

      在这个过程中,我们遭遇了一系列问题。消息丢失方面,因网络波动等因素,消息队列时有消息丢失现象。对此,在发送端增添消息确认机制,未收到队列确认即重试;接收端开启持久化存储。TCC 业务逻辑复杂问题上,开发通用 TCC 框架,提供统一接口与模板代码,降低开发难度。幂等性问题上,通过业务单号进行幂等性校验,避免消息重复消费导致的操作重复。凭借这些举措,我们成功解决分布式事务难题,保障了电商平台订单与支付流程的可靠与一致,满足了高并发业务需求。

        接下来我将从解决方案及分布式实现办法和项目中遇到的问题中详细介绍我们所采取的分布式事务的解决方案。

  1. 解决方案

        两阶段提交协议(2PC)将事务的提交过程分为两个阶段。第一阶段是准备阶段,协调者向所有参与者发送准备请求,参与者执行事务操作,但不真正提交,而是记录日志并向协调者反馈准备结果。第二阶段是提交阶段,如果所有参与者都反馈准备成功,协调者向参与者发送提交请求,参与者正式提交事务;若有任何一个参与者反馈失败,协调者则发送回滚请求。其优点是能够保证强一致性,但缺点也很明显,存在单点故障问题(协调者故障影响全局),并且同步阻塞会导致性能低下,尤其在高并发场景下表现不佳。

        三阶段提交协议(3PC)是对 2PC 的改进。它在 2PC 的基础上增加了一个预询问阶段。在预询问阶段,协调者先询问参与者是否有能力执行事务,参与者回复自己的状态。如果所有参与者都回复可以执行,再进入准备阶段和提交阶段。3PC 解决了 2PC 中协调者单点故障导致的参与者长时间阻塞问题,但依然存在性能瓶颈,且实现相对复杂。

        利用消息队列来实现分布式事务,主要思路是将事务操作转化为消息发送到消息队列中。例如在电商场景中,用户下单后,订单服务将订单创建消息发送到消息队列,支付服务从队列中获取消息进行支付处理。如果支付成功,再通过消息通知订单服务完成订单状态更新等后续操作。这种方式的优点是异步解耦,性能较好,缺点是消息可能会丢失或重复消费,需要额外的消息确认和幂等性处理机制来保证事务的最终一致性。

         TCC 分为三个操作阶段。Try 阶段尝试执行事务,完成业务检查和资源预留;Confirm 阶段确认执行事务,真正提交资源;Cancel 阶段取消执行事务,释放预留资源。以订单支付为例,Try 阶段锁定库存、冻结支付金额等,Confirm 阶段完成实际的库存扣减和金额划转,Cancel 阶段则是在出现问题时恢复库存和解冻金额。TCC 的优点是性能较好,适用于对数据一致性要求较高且业务可拆分的场景,但缺点是对业务侵入性较大,每个操作都需要开发对应的三个阶段逻辑。

2 分布式事务实现

        在我们的电商项目中,对于订单创建和支付这一关键流程,采用了消息队列结合 TCC 的混合方案。在用户下单时,订单服务首先采用 TCC 的 Try 阶段,锁定商品库存,同时将订单创建消息发送到消息队列。支付服务从消息队列获取订单消息后,进行支付操作,支付成功后,通过消息通知订单服务。订单服务接收到支付成功消息后,执行 TCC 的 Confirm 阶段,完成订单状态更新和库存实际扣减;若支付失败,订单服务执行 Cancel 阶段,释放库存。

3 遇到的问题及解决方法

        消息丢失问题:在测试过程中发现,由于网络波动等原因,消息队列偶尔会出现消息丢失情况。为解决此问题,我们在消息发送端增加了消息确认机制,发送消息后等待消息队列的确认回复,如果未收到确认则进行重试。同时在消息接收端,开启持久化存储,确保消息在消费前不会丢失。

        TCC 业务逻辑复杂性问题:TCC 模式对业务逻辑有一定侵入性,开发人员需要编写较多的代码来实现三个阶段的逻辑。我们通过开发通用的 TCC 框架来简化开发过程,框架提供了统一的接口和模板代码,开发人员只需关注具体业务逻辑的实现,提高了开发效率和代码的可维护性。

         幂等性问题:由于消息可能重复消费,导致业务操作重复执行。我们在业务接口上增加幂等性校验,通过唯一的业务单号来标识每一次操作,在执行操作前先检查该单号是否已被处理过,如果已处理则直接返回结果,避免重复操作,保证了事务的一致性。

        通过综合运用上述解决方案和问题处理措施,我们在项目中有效地实现了分布式事务,确保了订单和支付流程的一致性和可靠性,满足了电商平台高并发、高可用的业务需求。

http://www.dtcms.com/wzjs/246422.html

相关文章:

  • 网站模板免费下载代码seo关键词推广渠道
  • 上海专业网站建设费指定关键词seo报价
  • 用vs2010做免费网站模板下载公关公司的主要业务
  • 代做毕业设计的网站好推广公司产品
  • 同ip下网站产品怎么在网上推广
  • 北京公司建网站要多少费用宁德市教育局官网
  • 打开部分网站很慢策划书模板
  • b站广告投放平台入口推56论坛
  • 视频网站如何做手机如何建立网站
  • 做期货的网站登封网站设计
  • 对于网站界面google浏览器官方
  • 深圳网站建设公司官网云搜索app
  • 绿植租摆网站建设热门关键词
  • 网站开发论文研究方法百度站长联盟
  • 北京专业网站开发在百度上做广告推广要多少钱
  • 网站如何去分析做外贸怎么推广
  • 自己做的相册网站免费软文发布平台
  • 北京北京网站建设品牌广告
  • wordpress外网无css信息流优化师没经验可以做吗
  • 游戏公司做网站设计赚钱吗产品营销网站建设
  • 黄冈网站建设有哪些seo网站推广费用
  • 开发微信公众平台seo排名平台
  • 泰州网站建设推广独立站平台选哪个好
  • Myeclipse怎么做网站百度推广助手电脑版
  • 营销型网站要点淘宝seo 优化软件
  • wordpress 问卷调查外贸seo网站
  • 深圳专业做网站建网站免费的h5制作网站模板
  • 同服务器网站查询工具搜狗站长平台主动提交
  • 免费域名注册地址电商seo是什么意思啊
  • 网站建设公司公司好网站建设报价方案