首页 > 代码库 > 分布式事务

分布式事务

事务概念

并发控制的基本单位。所谓事务,它是一个操作序列逻辑操作的单元,要么成功,要么失败是不可分割的工作单位。

事务特性(ACID特性):

  • 原子性(Atomicity):事务必须是原子工作单元,对于诗句修改,要么全执行,要么全都不执行。
  • 一致性(Consistenty):事务在完成时,必须使所有的数据都保持一致状态。
  • 隔离性(Isolation):并发事件所做的修改必须与任何其他并发事务所作的修改隔离。
  • 持久性(Durability):一旦事务提交成功,数据修改是永久的。

事务管理器

LTM:轻量级事务管理器

  1. 管理本地事务
  2. 单个应用程序域中的事务
  3. 管理和实现俩个阶段提交协议
  4. 高效的资源管理器

KTM:在Vista核心中的新组建方便进行大量的错误回复工作

  1. KTM只能管理本地服务的事务

DTC:分布式事务协调器

  1. 分布式环境中运行事务
  2. 事务传播
  3. 跨机器,夸环境的事务管理器

WCF事务模式

  • None 不启用
  • client 客户启用 强制服务参与
  • service 服务启用
  • client/service  客户端或者服务本身启用事务

TransactionFlowOption

  • TransactionFlowOption.NotAllowed:不参与任何事务(默认值)
  • TransactionFlowOption.Allowed:允许参与事务。如果调用方(客户端)和服务Bingding启用了事务则参与。
  • TransactionFlowOption.Mandatory:强制启用事务。调用方(客户端)喝服务Binding必须启用事务才能调用本服务。

WCF事务模式配置

  • Client/Service Transaction 最常见的一种事务模型 通常有客户端或服务本身启用一个事务。设置步骤:
    (1)、选择一个支持事务的Binding,设置TransactionFlow=true。
    (2)、设置TransactionFlow(TransactionFlowOption.Allowed)。
    (3)、设置OperationBehavior(TransactionScopeRequired=true)
  • Client Transcation 强制服务必须参与事务,而且必须是客户端启用事务。设置步骤:
    (1)、选择一个支持事务的Bingding,设置TransactionFlow=true
    (2)、设置TransactionFlow(TransactionFlowOption.Mandatory).
    (3)、设置OperationBehavior(TransactionScopeRequired=true)
  • Service Transaction  服务必须启用一个根事务 而且不参与任何外部事务。设置步骤:
    (1)、选择任何一种Bingding,设置TransactionFlow=FALSE(默认)
    (2)、设置TransactionFlow(TransactionFlowOption.NotAllowed)
    (3)、设置OperationBehavior(TransactionScopeRequired=true)

事务投票机制

 image

 

 

分布式事务