在使用最终一致性的方案时,一定要提到的一个概念是状态机。

什么是状态机?是一种特殊的组织代码的方式,用这种方式能够确保你的对象随时都知道自己所处的状态以及所能做的操作。它也是一种用来进行对象行为建模的工具,用于描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。

状态机这个概念大家都不陌生,比如TCP协议的状态机。同时我们在编写相关业务逻辑的时候经常也会需要处理各种事件和状态的切换,比如switch、if/else。所以我们其实一直在跟状态机打交道,只是可能没有意识到而已。在处理一些业务逻辑比较复杂的需求时,可以先看看是否适合用一个有限状态机来描述,如果可以把业务模型抽象成一个有限状态机,那么代码就会逻辑特别清晰,结构特别规整。

比如我们来简单描述一个订单

我们以支付为例,一笔订单可能会有等待支付、支付中、已支付等状态,那么我们就可以先去把可能出现的状态以及状态的流程画出来。

状态机的两个作用

1. 实现幂等

2. 通过状态驱动数据的变化

3. 业务流程以及逻辑更加清晰,特别是应对复杂的业务场景

分布式事务常见解决方案-关于状态机相关推荐

  1. 一致 先验分布 后验分布_分布式事务常见解决方案与最终一致性

    小编推荐:互联网大背景下,微服务盛行,平时开发中难免会遇到分布式事务问题.大家经常会听到CAP原理,即一致性(Consistency).可用性(Availability).分区容错性(Partitio ...

  2. 分布式事务常见解决方案

    分布式事务的目的是保障分布式存储中数据一致性,而跨库事务会遇到各种不可控制的问题,如个别节点宕机,像单机事务一样的ACID是无法奢望的 一. 二阶段提交(2PC)(XA Transactions) 在 ...

  3. 分布式事务-常见解决方案

    2PC模式 (XA Transactions) 核心:事务协调器,协调是否提交和回滚 2PC(2 phrase commit 二阶段提交),又叫做:XA Transactions MySQL从5.5版 ...

  4. 分布式事务 常见方法

    不知道你是否遇到过这样的情况,去小卖铺买东西,付了钱,但是店主因为处理了一些其他事,居然忘记你付了钱,又叫你重新付. 又或者在网上购物明明已经扣款,但是却告诉我没有发生交易.这一系列情况都是因为没有事 ...

  5. springcloud分布式事务解决方案_搞懂分布式技术18:分布式事务常用解决方案

    本文转载自 http://linkedkeeper.com 本文内容参考网络,侵删 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 http ...

  6. 分布式事务及解决方案

    分布式事务 1 微服务化带来的分布式事务问题 开发当中真实场景: 首先,设想一个传统的单体应用(Monolithic App),通过 3 个 Module,在同一个数据源上更新数据来完成一项业务. 很 ...

  7. cap理论与分布式事务的解决方案

    现在很火的微服务架构所设计的系统是分布式系统.分布式系统有一个著名的CAP理论,即一个分布式系统要同时满足一致性(Consistency).可用性(Availablility)和分区容错(Partit ...

  8. 分布式事务终极解决方案探讨

    2019独角兽企业重金招聘Python工程师标准>>> 分布式事务终极解决方案探讨 转载于:https://my.oschina.net/dslcode/blog/1606115

  9. 分布式事务的解决方案

    数据库事务 在说分布式事务之前,我们先从数据库事务说起. 数据库事务可能大家都很熟悉,在开发过程中也会经常使用到.但是即使如此,可能对于一些细节问题,很多人仍然不清楚.比如很多人都知道数据库事务的几个 ...

最新文章

  1. 紧随Java 16,Spring Framework 5.3.5 发布:涵盖JDK 16的支持!
  2. Tomcat9URL不支持特殊字符解决方案
  3. FizzBu​​zz Kata与Java流
  4. JAVA学习篇--Java类加载
  5. python机器学习库sklearn——DBSCAN密度聚类
  6. Python_模块_Day_
  7. Flutter开发:在Flutter Plugin中引入aar——本地maven法
  8. 破解版PDF编辑器————Adobe Acrobat DC
  9. flex-builder编译方法
  10. mui+hbuilder h5+内置获取当前地理位置以及各种权限 兼容iOS/安卓
  11. 【中医学】10 针灸-1
  12. 瑞典皇家理工学院计算机科学世界排名,2017瑞典皇家理工学院世界排名
  13. vue 数组中的元素 渲染到一行
  14. 数据结构 算法与应用(c++ 描述) 自练答案
  15. 自己写编程语言-m语言
  16. 2.1.4 奇偶校验码
  17. 格子路径问题-施罗德数
  18. 高职计算机专业英语词汇,职高英语单词复习
  19. 静态数码管显示数字及字母
  20. kafka中Topic、Partition、Groups、Brokers概念辨析

热门文章

  1. Ubuntu 安装SVN服务器端
  2. Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
  3. mysql的单个数据库物理迁移出现ERROR 1146 (42S02): Table 'xx' doesn't exist [问题点数:100分]...
  4. sprint2第三天任务完成情况
  5. python 全栈开发,Day116(可迭代对象,type创建动态类,偏函数,面向对象的封装,获取外键数据,组合搜索,领域驱动设计(DDD))...
  6. 2017年总结的前端文章——CSS高级技巧汇总
  7. 2017年程序媛和工程狮绝对不能忽视的编程语言、框架和工具
  8. 检索COM类工厂中CLSID为{000209FF-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005...
  9. Silverlight Telerik控件学习:数据录入、数据验证
  10. 【struts2】struts2配置文件—struts.properties