聊聊最大努力通知方案
艿艿瞅了瞅市面上的资料,分别有两种解释。或者说,两种不同的解决方案。 解释一 最大努力送达,是针对于弱 XA 的一种补偿策略。它采用事务表记录所有的事务操作 SQL 。 如果子事务提交成功,将会删除事务日志。 如果执行失败,则会按照配置的重试次数,尝试再次提交,即最大努力的进行提交,尽量保证数据的一致性,这里可以根据不同的业务场景,平衡 C 和 A ,采用同步重试或异步重...
艿艿瞅了瞅市面上的资料,分别有两种解释。或者说,两种不同的解决方案。 解释一 最大努力送达,是针对于弱 XA 的一种补偿策略。它采用事务表记录所有的事务操作 SQL 。 如果子事务提交成功,将会删除事务日志。 如果执行失败,则会按照配置的重试次数,尝试再次提交,即最大努力的进行提交,尽量保证数据的一致性,这里可以根据不同的业务场景,平衡 C 和 A ,采用同步重试或异步重...
索引是一块物理空间,会占用数据库的空间 索引氛围B树索引和位图索引,下图为B树索引 一般SQL优化有几种解决方案: 1.索引(index) 2.分区(partition) 3.物化视图 4.并行查询 索引的说明和目的 索引是与表相关的一个可选结构,在逻辑上和物理上都独立于表的数据,索引能优化查询,不能优化DML操作,Oracle自动维护索引,银帆的DML操作反而会引起大量...
这个的意思,就是干脆不要用本地的消息表了,直接基于 MQ 来实现事务。比如阿里的 RocketMQ 就支持消息事务。 大概的意思就是: distributed-transaction-reliable-message A 系统先发送一个 prepared 消息到 mq,如果这个 prepared 消息发送失败那么就直接取消操作别执行了; 如果这个消息发送成功过了,那么接着...
精尽【分库分表】面试题 以下面试题,基于网络整理,和自己编辑。具体参考的文章,会在文末给出所有的链接。 如果胖友有自己的疑问,欢迎在星球提问,我们一起整理吊吊的【分库分表】面试题的大保健。 而题目的难度,艿艿尽量按照从容易到困难的顺序,逐步下去。 为什么使用分库分表? 如下内容,引用自 Sharding Sphere 的文档,写的很大气。 《ShardingSphere >...
XA 是 X/Open CAE Specification (Distributed Transaction Processing)模型,它定义的 TM(Transaction Manager)与 RM(Resource Manager)之间进行通信的接口。 Java中 的 javax.transaction.xa.XAResource 定义了 XA 接口,它依赖数据库厂商对 jdbc-d...
TCC 模型是把锁的粒度完全交给业务处理,它需要每个子事务业务都实现Try-Confirm / Cancel 接口。 TCC 模式本质也是 2PC ,只是 TCC 在应用层控制。 Try : 尝试执行业务 完成所有业务检查(一致性) 预留必须业务资源(准隔离性) Confirm : 确认执行业务...
Saga 是 30 年前一篇数据库伦理提到的一个概念。其核心思想是将长事务拆分为多个本地短事务,由 Saga 事务协调器协调,如果正常结束那就正常完成,如果某个步骤失败,则根据相反顺序一次调用补偿操作。 Saga 的组成如下: 每个 Saga 由一系列 sub-transaction Ti 组成 每个Ti 都有对应的补偿动作 Ci ,补偿动作用于撤销 Ti 造成的结果。这里的每...
Redis 可用的场景非常之多: 数据缓存 会话缓存 时效性数据 访问频率 计数器 社交列表 记录用户判定信息 交集、并集和差集 热门列表与排行榜 最新动态 消息队列 分布式锁 详细的介绍,可以看看如下文章: 《聊聊 Redis 使用场景》 《Redis 应用场景及实例》 《Redis 常见的应用场景解析》 《Red...
简单介绍 Netty 的核心组件? Netty 有如下六个核心组件: Bootstrap & ServerBootstrap Channel ChannelFuture EventLoop & EventLoopGroup ChannelHandler ChannelPipeline 2.1 Bootstrap & ServerB...
“RabbitMQ?”“Kafka?”“RocketMQ?”…在日常学习与开发过程中,我们常常听到消息队列这个关键词。我也在我的多篇文章中提到了这个概念。可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了不了解消息队列,本文都将带你搞懂消息队列的一些基本理论。如果你是老手,你可能从本文学到你之前不曾注意的一些关于消息队列的重要概念,如果你是新手,相信本文将是你打开消息队列...