版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
电商第十四天
分布式事务:
对分布式事务的理解:
CAP,BASE
分布式事务解决方案:
1. 基于XA协议的两阶段提交方案
LCN;分布式事务框架 https://github.com/codingapi/tx-lcn/wiki
2. TCC方案
3. 基于消息的最终一致性方案 消息中间件ActiveMq
4. 阿里的GTS
分布式事务的使用场景:
支付模块,订单模块,库存模块!
为什么采用消息中间件?
采用消息的最终一致性来解决分布式事务,采用activeMq !
使用消息队列的时候,有弊端【消息的不确定性】,解决方案:延迟队列,轮询解决即可!
1. 消息队列解决什么问题
a. 异步
b. 并行
c. 解耦
d. 排队{并发} 做秒杀业务。
弊端
e. 不确定性
2. 消息队列模式:
a. 点对点:
b. 订阅:
3. 使用java 来操作activemq
4. 制作activemq 的工具类
分布式事务整合业务使用:
1. 支付模块,当支付成功之后,发送消息给订单模块。
编写控制器进行测试
传递两个参数,一个orderId,result
测试:
gware-manage,order-service,payment
http://payment.gmall.com/sendPaymentResult?orderId=99&result=success
2. 根据发送的消息队列,对订单进行修改状态!
需要借助消息监听器工厂!
3. 订单将消息发送给库存系统!
减库存
放开库存的配置!
添加一个注解@Component
测试:
gware-manage,order-service,payment
4. 库存系统减库存,再发送给订单,订单状态应该为已发货。
SKU_DEDUCT_QUEUE