接着上面实践来源:http://www.roncoo.com/article/detail/124243
平时项目没有这方面实践,接触少,还是要多理解。
分布式系统架构中,分布式事务问题是一个绕不过去的挑战。而微服务架构的流行,让分布式事问题日益突出!
下面我们以电商购物支付流程中,在各大参与者系统中可能会遇到分布式事务问题的场景进行详细的分析!
如上图所示,假设三大参与平台(电商平台、支付平台、银行)的系统都做了分布式系统架构拆分,按上数中的流程步骤进行分析:
1、电商平台中创建订单:预留库存、预扣减积分、锁定优惠券,此时电商平台内各服务间会有分布式事务问题,因为此时已经要跨多个内部服务修改数据;
2、支付平台中创建支付订单(选银行卡支付):查询账户、查询限制规则,符合条件的就创建支付订单并跳转银行,此时不会有分布式事务问题,因为还不会跨服务改数据;
3、银行平台中创建交易订单:查找账户、创建交易记录、判断账户余额并扣款、增加积分、通知支付平台,此时也会有分布式事务问题(如果是服务化架构的话);
4、支付平台收到银行扣款结果:更改订单状态、给账户加款、给积分帐户增加积分、生成会计分录、通知电商平台等,此时也会有分布式事务问题;
5、电商平台收到支付平台的支付结果:更改订单状态、扣减库存、扣减积分、使用优惠券、增加消费积分等,系统内部各服务间调用也会遇到分布式事问题;
如上图,支付平台收到银行扣款结果后的内部处理流程:
1、支付平台的支付网关对银行通知结果进行校验,然后调用支付订单服务执行支付订单处理;
2、支付订单服务根据银行扣款结果更改支付订单状态;
3、调用资金账户服务给电商平台的商户账户加款(实际过程中可能还会有各种的成本计费;如果是余额支付,还可能是同时从用户账户扣款,给商户账户加款);
4、调用积分服务给用户积分账户增加积分;
5、调用会计服务向会计(财务)系统写进交易原始凭证生成会计分录;
6、调用通知服务将支付处理结果通知电商平台;
如上图,把支付系统中的银行扣款成功回调处理流程提取出来,对应的分布式事务问题的代码场景:
/** 支付订单处理 **/
@Transactional(rollbackFor = Exception.class)
public void completeOrder() {
orderDao.update(); // 订单服务本地更新订单状态
accountService.update(); // 调用资金账户服务给资金帐户加款
pointService.update(); // 调用积分服务给积分帐户增加积分
accountingService.insert(); // 调用会计服务向会计系统写入会计原始凭证
merchantNotifyService.notify(); // 调用商户通知服务向商户发送支付结果通知
}
本地事务控制还可行吗?
以上分布式事务问题,需要多种分布式事务解决方案来进行处理。
订单处理:本地事务
资金账户加款、积分账户增加积分:TCC型事务(或两阶段提交型事务),实时性要求比较高,数据必须可靠。
会计记账:异步确保型事务(基于可靠消息的最终一致性,可以异步,但数据绝对不能丢,而且一定要记账成功)
商户通知:最大努力通知型事务(按规律进行通知,不保证数据一定能通知成功,但会提供可查询操作接口进行核对)
相关推荐
微服务架构的分布式事务解决方案,完整31讲。,百度云资源 非加密,无密码,
本教程提供的分布式事务解决方案的设计思路在所有微服务架构项目中都适用,与编程语言无关,教程中会重点讲解方案的设计思路。 教程中的样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,...
### 微服务架构下的分布式事务解决方案 #### 一、引言 随着互联网技术的发展和企业级应用需求的增长,传统的单体应用已经难以满足高并发、高性能的要求。微服务架构因其高度解耦、易于扩展等特性成为了当前软件开发...
微服务架构的分布式事务解决方案,无解压缩密码,通过百度网盘下载即可学习使用
### 完整版微服务架构的分布式事务解决方案 在当今高度分布式的软件开发环境中,微服务架构因其灵活性、可扩展性和可维护性等优势而受到广泛欢迎。然而,随着微服务数量的增加,如何处理跨服务的数据一致性问题成为...
### 微服务架构下的分布式事务解决方案 在当前的软件开发领域中,随着业务复杂度的不断提升,传统的单体架构已无法满足高效、灵活的需求变化。因此,越来越多的企业选择了微服务架构来构建其业务系统。然而,在...
微服务架构下分布式事务解决方案-阿里GTS 微服务架构下分布式事务解决方案是当前微服务架构下的一个主要挑战性技术难题。微服务架构的发展推崇将复杂的单体应用拆分为若干个功能简单、松耦合的服务,以降低开发难度...
分布式事务是一个绕不过去的...教程中的样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,教程中所实现的分布式事务解决方案在Java体系中的微服务架构系统都能通用,与具体的开发框架无关。
分布式锁与信号量微服务架构中基于MQ的分布式事务解决方案分布式锁与信号量微服务架构中基于MQ的分布式事务解决方案分布式锁与信号量微服务架构中基于MQ的分布式事务解决方案分布式锁与信号量微服务架构中基于MQ的...
根据提供的标题、描述、标签及部分内容链接,我们可以推断出该视频全集主要围绕“微服务架构中的分布式事务解决方案”这一主题展开。接下来,我们将基于这些信息深入探讨相关的知识点。 ### 微服务架构简介 微服务...
在IT行业中,微服务架构是一种将单一应用程序分解为一组小型、独立的...通过“微服务架构的分布式事务解决方案.txt”这份文档,读者可以深入理解这一领域的核心概念和技术,从而在实际项目中有效应对分布式系统的挑战。
### Java微服务系统分布式事务解决方案 #### 一、CAP定理与分布式系统设计原则 **CAP理论**在分布式系统的设计中扮演着至关重要的角色。它指出,在分布式计算环境中,任何共享数据系统都无法同时保证一致性...
在这样的架构下,"07基于支付系统场景的微服务架构的分布式事务解决方案 微服务源码文档"提供了针对支付系统场景的微服务分布式事务处理策略。 首先,我们需要理解分布式事务的概念。在分布式系统中,一个事务可能...
本教程提供的分布式事务解决方案的设计思路在所有微服务架构项目中都适用,与编程语言无关,教程中会重点讲解方案的设计思路。 教程中的样例项目基于龙果学院开源的微支付系统进行实现,使用Dubbo作为服务化框架,...
### 微服务架构下的分布式事务解决方案 #### 一、引言 随着互联网技术的发展和企业级应用需求的增长,传统的单体应用已经难以满足高并发、高性能的要求,微服务架构应运而生。微服务架构的核心理念是将一个大型的...
【阿里GTS微服务架构下分布式事务解决方案】 随着微服务架构的广泛应用,它将大型的单体应用拆分成多个小型、独立的服务,提高了系统的可扩展性和敏捷性。然而,微服务化也带来了新的挑战,其中之一就是分布式事务...
微服务架构的分布式事务解决方案(附课件),完整版。附件是 txt 文件,内含网盘地址。