分布式事务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的负载均衡策 ...
随机推荐
- solidworks的工程图模板文件和图纸格式文件
工程图模板文件:drwdot,这个文件是在新建工程图的时候,可以选择的,如下. 图纸格式文件:slddrt,这个文件是进入工程图环境,编辑[图纸属性]的时候,可以选择的.如下. 怎么定制上述两种文件? ...
- javascript websocket 心跳检测机制介绍
====测试代码: ==index.html <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Oracle不能连接故障排除[TNS-12541: TNS: 无监听程序]
1. 情况:Oracle安装后使用的好好的,放假关机后重新开机居然发现不能正常连线,客户报错:TNS-12541: TNS: 无监听程序 2. 检查: 1. 服务器上Oracle启动正 ...
- python selenium 基本常用操作
最近学习UI自动化,把一些常用的方法总结一下,方便自己以后查阅需要.因本人水平有限,有不对之处多多包涵!欢迎指正! 一.xpath模糊匹配定位元素 武林至尊,宝刀屠龙刀(xpath),倚天不出(css ...
- Appium自动化学习1
1.Appium-desktop配置Desired Capabilities { "platformName": "Android", "platfo ...
- linux下导入、导出mysql数据库命令的实现方法
首先建空数据库 mysql>create database abc; 导入数据库 mysql>use abc; 设置数据库编码 mysql>set names utf8; 导入数据( ...
- Android 开发 监听back并且执行home键功能
方法一: 在activity中重写onBackPressed()方法 ,注意此处一定要注释或者删除 super.onBackPressed();方法 @Override public void onB ...
- 关于UILabel产生黑边的原因及去除方法
原因:因为label自适应宽度得出来的labelsize.width是小数,才会有黑边 去除方法: 将labelsize.width转换成整数,如下: CGSize size = CGSizeMake ...
- 【学习】数据聚合和分组运算【groupby】
分组键可以有多种方式,且类型不必相同 列表或数组, 某长度与待分组的轴一样 表示DataFrame某个列名的值 字典或Series,给出待分组轴上的值与分组名之间的对应关系 函数用于处理轴索引或索引中 ...
- centos mysql 默认是区分大小写的,修改成不区分大小写
修改mysql为不区分大小写设置: [root@test-huanqiu ~]# vim /etc/my.cnf //添加下面一行设置 .... [mysqld] lower_case_table_n ...