分布式事务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的负载均衡策 ...
随机推荐
- 洛谷题解 CF807A 【Is it rated?】
同步题解 题目 好吧,来说说思路: 1.先读入啦~(≧▽≦)/~啦啦啦 2.判断a[i]赛前赛后是否同分数,如果分数不同,则输出,return 0 . 3.如果同分数,则判断a[i]赛前(或赛后)是否 ...
- Mock Server
下载地址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/ 此处使用standalone的方式,不使用api用法 启动方 ...
- JAVA递归实现全排列
全排列(permutation) 排列组合概念 排列,就是指从给定n个数的元素中取出指定m个数的元素,进行排序 组合,则是指从给定n个数的元素中仅仅取出指定m个数的元素,不考虑排序 全排列 以数字为例 ...
- Python课程第一天作业
一.第一题:简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型? 计算机是不能理解高级语言的,更不能直接执行高级语言,它只能直接理解机器语言,所以使用任何高级语言编写的 ...
- C语言博客作业4--数组
C语言博客作业4--数组 1.本章学习总结 1.1思维导图 请以思维导图总结本周的学习内容,如下图所示: 1.2本章学习体会及代码量学习体会 1.2.1学习体会 描述本周学习感受,也可以在这里提出你不 ...
- ORACLE导出导入意外终止导致 ORACLE initialization or shutdown in progress 问题解决
由于意外情况导致 ORACLE initialization or shutdown in progress 个人理解为主要是归档日志出现问题, 首先cmd 1.sqlplus /nolog 进入s ...
- scrapy-middlewares
1.scrapy中间件 下载中间件Downloader Middlewares 下载器中间件处理请求与响应,对应两个方法 process_request(self, request, spider) ...
- Linux环境安装、卸载Docker
安装: 1.Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包:sudo yum update 3. ...
- linux命令行下xlsx转换成pdf或csv的笔记
使用libreoffice(可以用yum直接安装,占用了4xxM磁盘空间...) 然后命令行执行: 转换成csv,支持utf-8中文编码: libreoffice --invisible --con ...
- 【读书笔记】segment routing mpls数据平面-1