美文网首页
事务—事务模式

事务—事务模式

作者: 方方土 | 来源:发表于2013-04-26 10:00 被阅读453次

程序猿基础知识的学习、理解、整理——事务(方方土)

什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的设计模式,主要阐述的是事务在那一层控制的概念,分为以下三种事务模式:客户端拥有事务模式,领域服务拥有事务模式,服务端代理拥有事务模式;

可能你要问了,我作为一个开发人员,我对事务很熟悉,我也很了解事务的模型,我可以很好地处理好我程序的事务问题,为什么还要有一个事务模式的概念呢?

确实,对于一个小型的demo或者对于一个有单独个人完成的整体项目而言,没有必要提及事务模式的概念,但是在一个大型的项目中,特别是传统的三层架构或者四层架构的项目中,有一群开发人员并发开发的项目中,就要去考虑事务模式的问题了

在说以下三种不同模式之前,要先说清楚一个程序的层次是怎么样的?

客户端(可以是单独的一个客户端程序,或者是三层架构中的展现层):
服务端:服务器端的“代理层”,(一般三层架构不包含这层,可以用代理模式或者命令模式来实现)
服务端:服务器端的“领域层”,(三层架构中的service层)
服务端:服务器端的“DAO层”,(三层架构中的数据访问层)

基于上面的层次划分,就比较好理解以下的三种模式了
1、客户端拥有事务模式:事务控制在客户端
2、领域服务拥有事务模式:事务控制在服务端“领域层”
3、服务端代理拥有事务模式:事务控制在服务端“代理层”

很简单,这三种事务设计模式的主要区别就在于这里,那么遵循设计模式是否有必要?那么在什么情况下选择怎么样的事务设计模式?这三种设计模式的最佳实践又是怎么样的呢?
1、极端来说,不采用这些设计模式,你也可以把事务处理好,带式带来的问题是不统一了,凌乱了,整个项目不好管理了。所以从这一点上来说,事务的设计模式,应该是架构师在分层的时候一定要考虑好的事情;
2、万不得已情况下采用客户端事务模式,推荐使用领取服务事务模式,如果在你的层次划分中,有代理层,而且在你的设计过程中,领域服务划分粒度的考虑,不以一个事务为粒度来划分的话,那么推荐使用服务端代理事务模式;
3、结合着这三种事务的设计模式,回想一下以前提到的事务设计模型,是不是发现,声明式事务帮我们解决了很多问题,如果还采用本地事务模型,那么完了,开发人员就无法聚焦于业务逻辑的开发,而整天在处理一些事务的相关问题了。

相关文章

  • 事务—事务模式

    程序猿基础知识的学习、理解、整理——事务(方方土) 什么是事务模式?这里提到的事务模式,主要是指在系统设计过程中的...

  • 补充 - 事务 & 锁机制

    一,事务 1,什么是事务 2,事务的4大特征ACID 3,事务的3种运行模式 4,如何开启事务(默认开启) 二,数...

  • 刚性事务和柔性事务

    3、刚性事务和柔性事务 刚性事务:强一致性,比如用seata的AT模式就是刚性事务 柔性事务:使用mq做事务处理就...

  • 分布式事务

    分布式事务 强一致性事务 XA 柔性事务 BASE2.1 不使用事务,业务侧补偿 SAGA模式2.2 使用柔性事务...

  • 分布式事务 | 使用 dotnetcore/CAP 的本地消息表

    本地消息表模式 本地消息表模式,其作为柔性事务的一种,核心是将一个分布式事务拆分为多个本地事务,事务之间通过事件消...

  • # Spring系列 - 事务传播特性

    分类 NEVER非事务模式执行若当前有事务,则抛异常 NOT_SUPPORTED不支持事务若当前有事务,则挂起当前...

  • Seata in AT mode的工作原理

    Seata为用户提供了AT、TCC、SAGA和XA事务模式。其中AT模式是seata主推的事务模式,使用AT有一个...

  • Spring与mysql事务

    autocommit与事务 1)MySQL默认操作模式就是autocommit自动提交模式。除非显式地开始一个事务...

  • Spring 事务

    Springa事务机制是一种典型的策略模式,PlatformTransactionManager代表事务管理接口,...

  • Django 事务详解

    Django 1.4 事务默认模式是autocommit模式,每个查询都相当于一个事务,每次查询都直接提交comm...

网友评论

      本文标题:事务—事务模式

      本文链接:https://www.haomeiwen.com/subject/szwttttx.html