目录
-
事务
- 由一组操作构成的可靠,独立的工作单元;
- ACID:
- 原子性
- 隔离性
- 一致性
- 持久性
- java有三种事务,jdbc事务,jta事务,容器事务,jdbc事务无法实现分布式事务的控制,jta是可以实现的,容器事务(spring事务)一般是也是基于jta去实现的
- 应用于分布式的主要难点是:高度并发,资源分布,大时间跨度;
标准分布式事务基于jta去实现的,分布式事务(Distributed Transaction)包括事务管理器(Transaction Manager)和一个或多个支持 XA 协议的资源管理器 ( Resource Manager )。我们可以将资源管理器看做任意类型的持久化数据存储;事务管理器承担着所有事务参与单元的协调与控制
扫描二维码关注公众号,回复:
3534220 查看本文章
分布式事务的设计理论
1:可靠性的消息子系统的设计和原理
- 一般来说会把消息的发送做成一个子系统,使用关系数据库来存储需要发送的消息,才用预发送和确认发送来保证消息的一致性,当然可能会有网络问题,所以需要设计消息确认和恢复的一些定时任务
- 一样的子系统,循环找出未成功发送或者未成功消费的一些东西进行删除或者恢复。消息管理子系统主要是提供一个可视化界面来操作一些异常的消息。显示幂等性(重复的信息只被消费一次),最后的优化建议
2:最大努力型通知(定期校对)
- 消费端接收到消息后存储进通知服务和通知记录,然后发送通知给被动方,设置定时任务对未发送成功的通知进行重新发送,直到重新发送最大次数为止
3:TCC(一致性最强方案,性能略低)
- 使用的是tcc-transaction轻量级分布式事务框架,原理是通过aop和拦截器进行实现
- 另外:LCN也比较火