分布式数据库

概念特点
  • 数据独立性

    数据分布独立性(分布透明性)

  • 集中与自治共享结合的控制结构

    各局部的DBMS可以独立的管理局部数据库,具有自治的功能。同时,系统又设有集中控制机制,协调各局部DBMS的工作,执行全局应用。

  • 数据冗余

    不同的场地存储统一数据的多个副本,提高系统的可靠性、可用性、性能

  • 全局一致性/可串行性/可恢复性

    一致性确保数据在任何事务执行后都保持合法状态。

    可串行性保证并发事务的结果与某种顺序串行执行的结果一致,使并发控制的理想状态

    可恢复性确保系统在故障后能够恢复到一致状态,是系统可靠性的保证


分布式事务

常用解决方案2PC/3PC,TCC,SAGA,本地数据表,MQ消息事务,最大努力通知
  • 两阶段提交2PC

    一阶段:事务预处理/投票阶段
    • 事务询问。协调者向所有参与者发送事务内容,询问是否可以执行提交操作,并开始等待各参与者进行响应。
    • 执行事务。各参与者节点,执行事务操作,并将Undo和Redo操作计入本机事务日志
    • 各参与者向协调者反馈事务问询的响应。成功执行返回Yes,否则返回No
    二阶段:执行事务提交
    • 所有参与者Reply Yes,执行事务提交。发送提交请求。协调者向所有参与者发送Commit请求,事务提交。
    • 参与者收到commit请求后,会正式执行事务提交操作,并在完成提交操作后,释放在整个事务执行期间占用的资源;返回事务提交结果。参与者在完成事务提交,协调者发送ACK消息确认,完成事务。协调者在收到所有参与者的ACK后,完成事务
主要问题 解释
性能问题 在2PC提交过程中,所有参与事务操作的逻辑都处于阻塞状态,占用系统资源。
单点故障 2PC协议中的协调者是个单点,一旦协调者出现问题,其他参与者将无法释放事务资源,也无法完成事务操作。是一个严重的可靠性隐患
数据不一致 当执行事务提交过程时,如果协调者向所有参与者发送Commit请求后,发生局部网络异常或者系统跳着自身崩溃,可能只有部分参与者收到并执行了请求。导致系统出现数据不一致的情况
保守机制 2PC没有完善的容错机制,当参与者出现故障时,协调者无法快速得知,只能严格依赖超时设计来决定是否继续提交或中断事务。这种机制比较保守,无法应对动态的网络环境。

  • TCC方案

    TCC(Try-Confirm-Cancel)概念。
    • TCC事务机制相比于2PC解决了协调者单点问题,由业务方发起并完成这个业务活动。业务活动管理器也变成多点,引入集群。
    • 同步阻塞:引入超时,超时后进行补偿,并且不会锁定整个资源,将资源转为业务逻辑形式,粒度变小
    • 数据一致性,有了补偿机制之后,由业务活动管理器控制一致性
    阶段
    • Try阶段:尝试执行,完成所有业务检查(一致性),预留必须业务资源(准隔离性)
    • Confirm阶段:确认执行真正执行业务,不做任务业务检查,只使用Try阶段预留的业务资源,Confirm操作满足幂等性。要求具备幂等设计,Confirm失败后需要进行重试
    • Cancel阶段:取消执行,释放Try阶段预留的业务资源。Cancel操作满足幂等性。