• 分布式事务:基本概念


    事务

    本地事务

    对同一数据源操作,进行一组相关的sql操作(至少两个增删改),要么全部成功,要么全部失败。

    事务四个特性(ACID)

    原子性,一致性,隔离性,持久性

    事务的隔离级别

    根据两个事务之间的干扰性强弱,划分为几个级别

    读未提交、读已提交、可重复读、串行化

    脏读:事务a读取到了事务b未提交的数据,有可能这些数据就是事务b的中间数据

    不可重复读:可重复读

    幻读:一个事务在查询,另一个事务在做插入或者删除,此时就会出现幻读。

    image-20210317111915061

    事务隔离级别越高,性能越低。

    本地事务实现

    spring方式:aop实现,xml注解形式(@Traansactional)

    1.配置数据源

    2.配置事务管理器,跟数据源匹配

    3.切面和切入点(决定给哪些业务)

    4.配置事务通知

    5.将切入点和事务通知联系起来

    分布式事务

    事务的参与者服务器数据源事务管理器,分布在不同的节点上.原子性操作,要么全部成功,要么全部失败.

    image-20210317114415293

    刚性事务:ACID

    柔性事务:CAPBASE

    image-20210317115152079

    CAP理论

    定义:数据一致性(consistency)、服务可用性(availability)、分区容错性(partition-tolerance)

    CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡。

    CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
    AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

    image-20210317115801470

    BASE理论

    BASE其实是下面三个术语的缩写:

    • 基本可用(Basically Available)
    • 软状态(Soft state)
    • 最终一致(Eventually consistent)

    核心思想:分布式事务,只需要达到最终一致性即可。

    柔性事务

    概念:符合BASE理论的分布式解决方案,就叫做柔性事务。

    典型的柔性事务方案:

    • TCC(两阶段型、补偿型)
    • 可靠消息最终一致性(异步确保型)消息队列保证事务一致性
      • 非事务型消息中间件(activemq,rabbitmq,kafka)
      • 事务性消息rocketmq
    • 最大努力通知(非可靠消息、定期校对)

    DTP

    分布式事务处理模型(DTP)

    模型元素5个:

    • 应用程序 Application Program 简称AP
    • 资源管理器 Resource Manager 简称RM,例如数据库、文件系统等
    • 事务管理器 Transaction Manager 简称TM,负责分配事务唯一标识,监控事务的执行进度,并负责事务的提交、回滚等。
    • 通信资源管理器 Communication Resource Manager 简称CRM:控制一个TM域内或者跨TM域的分布式应用之间的通信。
    • 通信协议 Communication Protocol 简称CP

    image-20210317131747384

    XA规范

    XA规范最主要的作用是:定义了RM-TM的交互接口。

    image-20210317131857476

    XA规范与二阶段协议

    二阶段协议并非在XA规范中提出来的,但是XA规范定义了两阶段提交协议中需要使用到的接口。

    image-20210317132055059

    XA和二阶段是相互参考的。

    JTA、XA、atomikos之间的关系

    可以认为JTA是XA规范的java版本。在jta中,事务管理抽象为javax.transaction.TransactionManager接口,并通过底层事务服务(JTS)实现。

    JTA仅仅定义了接口

    实现:

    • J2EE容器提供的JTA实现(JBOSS)
    • 独立的JTA实现:例如JOTM、Atomikos,可用于Tomcat、jetty以及普通的java应用。
    • Atomikos JTA实现,用于tomcat容器
  • 相关阅读:
    启动hbase时出现HMaster Aborted错误
    kylin的安装与配置
    【转】HBase原理和设计
    ts项目报错:Import sources within a group must be alphabetized
    TypeScript 之 tsconfig.json
    TypeScript 之 声明文件的结构
    TypeScript 之 声明文件的使用
    TypeScript 之 声明文件的发布
    TypeScript 之 NPM包的类型
    create-react-app-typescript 知识点
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14548937.html
Copyright © 2020-2023  润新知