分布式事务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的负载均衡策 ...
随机推荐
- java 调用c# web api 代码
上次我们写的.net web api 给对方公司的java团队调用,他们觉得说java无法调用.net 写的api ,靠居然有这事,索性自己写一个java的demo给他们 使用apache的Http ...
- gmer ver2.1.19357
gmer是一款来自 波兰 的多功能安全监控分析程序.它可以结束除了System和System Idle Process以外几乎所有的进程,还可以查看被隐藏的进程,服务以及驱动(以红色的方式显示此进程. ...
- 自己的mongodb的CRUD封装
工具类:package Utils; import com.google.common.collect.Lists; import com.mongodb.MongoClient; import co ...
- Python3实现自动点赞抖音小姐姐
什么是抖音 抖音是2016年9月上线的一款音乐创意短视频社交软件,是一个专注年轻人的15秒音乐短视频社区.用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品. 效果 抖音经常能刷到很 ...
- Docker笔记——jenkins镜像制作
jenkins官方路径:https://hub.docker.com/_/jenkins/ 最新Dockerfile路径:https://github.com/jenkinsci/docker/blo ...
- IntelliJ IDEA神器使用技巧 慕课
1,高效定位代码:无处不在的跳转. 项目之间的跳转(打开了多个窗口):ctrl+alt+] 或ctrl+alt+[ 查找窗口 shift+ctrl+a 输入recent file 最近打开的文件. ...
- SAML2.0 SP端处理
sso response解析 import java.io.ByteArrayInputStream; import java.io.InputStream; import java.security ...
- MySQL创建数据库时指定编码utf8mb4和添加用户
CREATE DATABASE `wordpress` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; CREATE DATABASE `wor ...
- redis hashmap数据结构分析
说明一点:redis的hash中每一个key都是一个单独的hash表,field是hash表中的key,value是hash表中的value: //redis中hash数据结构为:key-field- ...
- Android App专项测试(压力测试)
转载https://blog.csdn.net/qq_29794757/article/details/64160303 转载https://blog.csdn.net/xuejiaodream/ar ...