啥?分布式啥?啥事务?
Hollis
共 2940字,需浏览 6分钟
· 2021-09-02
二将军问题
「情形1」:送信失败,如下图所示,左侧白军穿过山谷的时候被黑军俘虏了,右侧白军仍旧不知道左侧白军的进攻信息。
「情形2」:送信成功,回信失败。如下图所示,左侧白军穿过山谷将信息成功通知给右侧白军,但是右侧白军携带"收到命令"的信息,穿过山谷向左侧白军通知的时候被黑军俘虏了,此时左侧白军不知道右侧白军是否接收到进攻命令。
「情形3」:送信成功,回信成功,如下图所示,白军胜利毫无疑问。
面对不稳定的信息传输通道(山谷中的黑军),要完成两股白军的通信是有难度的,送信回信的过程就好比我们系统中Send和Ack 的过程,并且只要送信或者回信任意一次失败,整个信息传递就标志着失败,无法完成进攻,这像不像CAP的最佳打开方式 中提到的原子性,事务中的每个操作都成功,事务才会提交。 如果真的发生了情形1和情形2,如果你是左侧白军的统帅或者右侧白军的负责人,你该怎么办呢?是不是应该等等,看看有没有回信,如果长时间没有回信就认为这个送信的人被俘虏了,再派1个人重复送信的过程,这就是我们在系统中常见的超时重试。当然 重试一定是有限制
的,如果真的无限重试。那么左右侧白军人数有可能会清零(资源耗尽),战争自然失败(系统自然崩溃)如果左侧白军派遣多名士兵同时发起送信的动作,那么对于右侧白军来说不管收到多少次信息,都只进攻一次。类比咱们系统来说,对于不管是一次请求还是多次请求,结果都是一样的,这就是 系统幂等性
这个二军问题,像不像TCP链接的握手的过程呢?问题来了, 为什么是三次握手,而不是两次握手?
文章留言回复下,如果你不知道可要补课啦
本地事务
分布式事务
资源管理器(Resource Manager, RM)即事务参与者 事务管理器(Transaction Manager, TM)即事务协调者
一个TM会管理多个RM
,就类似上面我们的超市促销支付的逻辑去协调多方数据库资源,从而协调各个本地事务的进度,使其共同提交或回滚,最终达成一种全局的 ACID 特性
。两种事务的区别
分布式事务的场景
「资源主导」
「服务依赖主导」
「混合主导」
分布式事务的分类
有道无术,术可成;有术无道,止于术
欢迎大家关注Java之道公众号
好文章,我在看❤️
评论
神作《凤凰架构:构建可靠的大型分布式系统》PDF来了
今天给大家带来了一本大作:周志明老师的 《凤凰架构:构建可靠的大型分布式系统》PDF版来了,文末直接获取周志明是谁?这可是真大佬,或许有些朋友没有听过,但是你们一定听过:《深入理解 Java 虚拟机》这本神书,没错就是这本书的作者,出过多本书,豆瓣评分如下,全是高分,尤其是《深入理解Java虚拟机》
路人甲Java
0
Redis 是怎么从单体架构发展到分布式缓存的?
图解学习网站:https://xiaolincoding.comRedis 架构是如何一步一步发展到今天的样子的?2010 年 - 单体 RedisRedis 1.0 于 2010 年发布,当时的架构非常简单。它通常用作业务应用程序的缓存。不过,Redis 将数据存储在内存中。当我们重启 Redis
小林coding
10
原子化状态管理库 Jotai,它和 Zustand 有啥区别?
Jotai 是一个 react 的状态管理库,主打原子化。提到原子化,你可能会想到原子化 CSS 框架 tailwind。比如这样的 css:<div class="aaa"></div>.aaa { font
前端桃园
0
搞定了 6 种分布式ID,分库分表哪个适合做主键?
大家好,我是小富~本文是《ShardingSphere5.x分库分表原理与实战》系列的第七篇,目前系列的前几篇制作成了PDF,需要的可以在文末获取下载方式,持续更新中。今天咱们继续一起来探究下,分布式ID在分库分表中起到的作用以及如何使用,ShardingSphere-jdbc中已经为我们提供了多种
程序员内点事
746
用 MySQL 实现分布式锁,你听过吗?
来源:blog.csdn.net/linsongbin1/article/details/79444274👉 欢迎加入小哈的星球 ,你将获得: 专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡 / 赠书福利全栈前后端分离博客项目 2.0
小哈学Java
541
面试题:toString()、String.valueOf、(String)强转,有啥区别?
点击关注上方“Stephen”,设为“置顶或星标”,第一时间送达干货一、前言相信大家在日常开发中这三种方法用到的应该很多,尤其是前两种,经常在开发的时候,随心所欲,想用哪个用哪个,既然存在,那就应该有它存在的道理,那么什么情况下用哪个呢?二、代码实例1、基本类型(1)基本类型没有toString()
Stephen
0
深入探讨下SSR与CSR有啥不同
随着互联网技术的迅速发展,用户对网页的加载速度和交互体验有了更高的期待。作为开发者,我们常常需要在服务器端渲染(SSR)与客户端渲染(CSR)之间做出选择。这两种渲染方式各有特点,适用于不同的场景和需求。今天,就让我们一起来探索SSR和CSR的世界,帮助你为你的应用选择最合适的渲染策略。什么是渲染?
前端达人
10
40 张图搞懂分布式日志追踪,强大的traceId
面试的时候程序汪发现对方简历里有分布式项目,我肯定会考考对方分布式日志追踪,下面是具体干货分析,建议大家搞懂,不管你是应付面试还是项目BUG定位都非常的实用。在微服务架构中,一次请求往往涉及到多个模块,...
我是程序汪
0