分布式事务Hmily TCC源码--学习整合
一、什么是分布式事务
分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点上,
本质上来说,分布式事务是为了保证不同数据库的数据一致性
TCC事务主要是基于AOP切面拦截实现的三阶段提交事务,下面我们来跟读源码====>
hmily,这原本是5个根本不相干的英文字母拼凑在一起的。我第一次看到关于它的故事是在某年某月某日的某本杂志上看到的,题目就是hmily。
C是一个活泼的女孩,她在大学的生活中平平淡淡的过了2年半 ,故事的开始是从一张招聘告示开始的。因为学校的实习任务,C必须在这个暑假完成一份实习报告。自认为是设计系最具另类思维新人的她,并不削于去那些小的平面广告公司做设计师。走过宿舍门前的公告栏时,她突然发现了一张跟她一样另类的招聘启示。“招设计助理,要求,女,大三,带写就业报告,月薪…………”。就这样C按照启示上的地址来到了学校附近的一所居民楼里,第一次见到了她的老板B。从应聘过程中她了解到B是本校的大四师兄,招聘她来的目的是协助他为完成毕业报告。人长得一般,不过肩很宽,牙齿很白,笑起来很阳光…………基本上双方对第一次见面都满意,就这样C就开始了每天往返于学校--工作室--宿舍之间。当然后面的情节很老套,C和B在渐渐的相处里擦出了火花,C在大学里第一次尝到了恋爱的滋味,对于这个有点静却总是对着她微微笑的男生非常满意。她很享受每天傍晚,靠着B宽宽的肩,钻进他怀里撒娇。她喜欢B弯下腰来给她系鞋带,她喜欢看B吃她剩下的食物,还要对她说“谢谢”……B喜欢画画,画里大多数描写的都是C,每一副画的右下角都会有一个签名“hmily”,这是B的秘密,每当C仰着脑袋问他时,他都会神秘一笑,在C脸上轻啄一下,“等你嫁给我就知道了”。
B的毕业论文顺利完成,C也顺利升到大四。在B离开的日子里,他们通过电话互相倾诉对彼此的思念。偶尔的相距让两人的生活一直处于平稳阶段。C毕业了,幸运来到一家不错的广告公司,开始每天有规律的生活。这家公司的老板叫A,是一个很年轻又长得很帅的男人。从C第一天来到他公司,他就对C产生了一份不一样的感情,是他安排C来到他的身边,他坚信猎物快到手了。C是个单细胞,特别是在感情方面,她一直认为有了B已经很满足了。从A表白的那天开始,C的生活开始乱了,而B这时正因为事业的需要,再一步一步往上爬,来看C的机会少了,所以对C的心里关心也少了。往往在这个时候,A是第一个出现在C面前的人。从最初的逃避到慢慢的了解接触,C一步一步走向了A。她渐渐的少回去当初那个温馨的小屋,去看看B的画,也渐渐忘了“hmily”。
当B意识到C的转变时,已经晚了。无论他如何哀求,C还是不愿意回到他的身边。B带着伤心离开了这个城市,他最后留给了C一副画,一副带有“hmily”签名的画…………
时间过得很快,B的事业在步步高升,而他也从此成为了一个孤独的人。往往走在城市喧嚣的街道,看着身边走过的情侣,他都会想起C,想念那个充满爱的 小屋。
而C在没有B 的城市里,和A过得并不开心,失去了新鲜感的双方,开始了无休止的战争。因为他们两个都不愿意先向对方低头,他们最终分开了。带着自己的行李,C搬出了A的家,回到从前的小屋,看着满是灰尘的画,C落泪了。在收拾屋子的过程中,C发现了B留下的日记。看到了hmily的真正含义:“How much I love you!”-----“我是多么爱你"!!!
二、CAP理论
解决多个微服务之间数据可能不一致的问题,一般有个CAP理论:
C: 一致性.在分布式系统中的所有数据备份,在同一时刻具有同样的值,所有节点在同一时刻读取的数据都是最新的数据副本
A: 可用性,好的响应性能.完全的可用性指的是在任何故障模型下,服务都会有限的时间内处理完成并进行响应
P:分区容忍性.尽管网络有部分消息丢失,但系统仍然可以继续工作
CAP原理证明,任何分布式系统只可同时满足以上两点,无法三者兼顾.由于关系型数据库是单节点无复制的,因此不具有分区容忍性,但具有一致性和可用性,而分布式的微服务系统都必须满足分区容忍性,SpringCloud中的Eureka就是A P 定理的结合
分布式事务Hmily TCC源码--学习整合的更多相关文章
- 分布式事务中间件 TCC-Transaction 源码分析 —— 项目实战
https://blog.csdn.net/lldouble/article/details/79455172
- 框架源码系列十一:事务管理(Spring事务管理的特点、事务概念学习、Spring事务使用学习、Spring事务管理API学习、Spring事务源码学习)
一.Spring事务管理的特点 Spring框架为事务管理提供一套统一的抽象,带来的好处有:1. 跨不同事务API的统一的编程模型,无论你使用的是jdbc.jta.jpa.hibernate.2. 支 ...
- Spring5.0源码学习系列之事务管理概述
Spring5.0源码学习系列之事务管理概述(十一),在学习事务管理的源码之前,需要对事务的基本理论比较熟悉,所以本章节会对事务管理的基本理论进行描述 1.什么是事务? 事务就是一组原子性的SQL操作 ...
- Spring 源码学习笔记11——Spring事务
Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...
- 源码学习之ASP.NET MVC Application Using Entity Framework
源码学习的重要性,再一次让人信服. ASP.NET MVC Application Using Entity Framework Code First 做MVC已经有段时间了,但看了一些CodePle ...
- [阿里DIN] 从论文源码学习 之 embedding层如何自动更新
[阿里DIN] 从论文源码学习 之 embedding层如何自动更新 目录 [阿里DIN] 从论文源码学习 之 embedding层如何自动更新 0x00 摘要 0x01 DIN源码 1.1 问题 1 ...
- Spring 源码学习笔记10——Spring AOP
Spring 源码学习笔记10--Spring AOP 参考书籍<Spring技术内幕>Spring AOP的实现章节 书有点老,但是里面一些概念还是总结比较到位 源码基于Spring-a ...
- Seata Server 1.5.2 源码学习
Seata 包括 Server端和Client端.Seata中有三种角色:TC.TM.RM,其中,Server端就是TC,TM和RM属Client端.Client端的源码学习上一篇已讲过,详见 < ...
- Dubbo源码学习--集群负载均衡算法的实现
相关文章: Dubbo源码学习文章目录 前言 Dubbo 的定位是分布式服务框架,为了避免单点压力过大,服务的提供者通常部署多台,如何从服务提供者集群中选取一个进行调用, 就依赖Dubbo的负载均衡策 ...
随机推荐
- Centos7上使用tomcat8
1.上传apache-tomcat-8.5.39.tar.gz到/usr/local 2.解压文件:tar -zxvf apache-tomcat-8.5.39.tar.gz 3.把文件夹名改简单一些 ...
- node环境
下载教程:http://www.runoob.com/nodejs/nodejs-install-setup.html 选择版本下载:https://nodejs.org/en/download/ 输 ...
- Java 8 默认方法
转自:https://www.runoob.com/java/java8-default-methods.html Java 8 新增了接口的默认方法. 简单说,默认方法就是接口可以有实现方法,而且不 ...
- stylus含有的特性
Stylus 冒号可有可无 分号可有可无 逗号可有可无 括号可有可无 变量 插值(Interpolation) 混合(Mixin) 数学计算 强制类型转换 动态引入 条件表达式 迭代 嵌套选择器 父级 ...
- 浏览器端时间循环与nodejs端时间循环的不同之处(宏任务与微任务)
浏览器端与node端都有宏任务与微任务的概念.字面意思上看宏任务就是耗时间比较长的任务,而微任务是耗时短的任务. 在浏览器端,宏任务包括setTimeout,setInterval,微任务则包括Pro ...
- 《Java开发学习大纲文档》V6.0(已经不公布了,请查看第七版)
<Java开发大纲学习文档第六版>简介: 有需要的私聊作者QQ:253173641.
- Ontology理论研究和应用建模
转自:https://www.cnblogs.com/yes-V-can/p/8151275.html 目录 1 关于Ontology 1.1 Ontology的定义 1.2 Ontology的建模元 ...
- S8-codelab02
import news_cnn_model import numpy as np import os import pandas as pd import pickle import shutil i ...
- Java_判断文件是否写入完成
/** * 等待文件(非目录)读写完毕,费时的操作,不要放在主线程 * * @param file 文件 */ private void waitForWirtenCompleted(File fil ...
- vue-cli 报Module build failed: Error: No parser and no file path given, couldn't infer a parser.错的解决方法
出错提示如下: ERROR Failed to compile with errors :: error in ./src/App.vue Module build failed: Error: No ...