sharding-jdbc分表分库用到的分布式事务

Sharding-JDBC分库分表-分布式事务-5 本文介绍了Sharding JDBC提供的两种分布式事务解决方案:XA事务和BASE事务。XA事务基于X/OPEN组织的DTP模型,通过两阶段提交实现强一致性,适合短事务场景;BASE事务则追求最终一致性,适合高并发场景。文章重点演示了XA事务的Atomikos实现,包括依赖引入、事务配置和使用方法。通过测试案例验证了XA事务在分库分表环境中的正确回滚机制,确保了分布式事务的原子性。 阅读详情

一、引入分布式事务

<dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-transaction-2pc-xa</artifactId>
    <version>${sharding.version}</version>

</dependency>
<dependency>
    <groupId>io.shardingsphere</groupId>
    <artifactId>sharding-transaction-spring</artifactId>
    <version>${sharding.version}</version>
</dependency>

二、数据分片
6.1 分片支持
Sharding-JDBC提供了5种分片策略。由于分片算法和业务实现紧密相关,因此Sharding-JDBC并未提供内置分片算法,而是通过分片策略将各种场景提炼出来,提供更高层级的抽象,并提供接口让应用开发者自行实现分片算法。

1,StandardShardingStrategy

标准分片策略。提供对SQL语句中的=, IN和BETWEEN AND的分片操作支持。StandardShardingStrategy只支持单分片键,提供PreciseShardingAlgorithm和RangeShardingAlgorithm两个分片算法。PreciseShardingAlgorithm是必选的,用于处理=和IN的分片;RangeShardingAlgorithm是可选的,用于处理BETWEEN AND分片,如果不配置RangeShardingAlgorithm,SQL中的BETWEEN AND将按照全库路由处理。

2,ComplexShardingStrategy

复合分片策略。提供对SQL语句中的=, IN和BETWEEN AND的分片操作支持。ComplexShardingStrategy支持多分片键,由于多分片键之间的关系复杂,因此Sharding-JDBC并未做过多的封装,而是直接将分片键值组合以及分片操作符交于算法接口,完全由应用开发者实现,提供最大的灵活度。

3,InlineShardingStrategy

Inline表达式分片策略。使用Groovy的Inline表达式,提供对SQL语句中的=和IN的分片操作支持。InlineShardingStrategy只支持单分片键,对于简单的分片算法,可以通过简单的配置使用,从而避免繁琐的Java代码开发,如: tuser${user_id % 8} 表示t_user表按照user_id按8取模分成8个表,表名称为t_user_0到t_user_7。

4,HintShardingStrategy

通过Hint而非SQL解析的方式分片的策略。

5,NoneShardingStrategy

不分片的策略。

/**

  • 注意:@ShardingTransactionType需要同Spring的@Transactional配套使用,事务才会生效。
  • @param param
  • @return
    */
    @ShardingTransactionType(TransactionType.XA)
    @Transactional(rollbackFor = Exception.class)
    @Override
    public int addParam(DemoParam param) {
    log.info(“addParam-param={}”, param);
    return demoParamDao.addParam(param);
MySQL思考-分库分表(Sharding-JDBC) 一 分库分表基本概念 1.1 分库 将一个数据库,在节点上部署多台。因为当很多客户端连接客户端,并发量高,需要进行分库。 1.2 分表 将一个表,分成多个表。因为在MySQL中一个表数据达到5千万条,数据库性能严重下降。 1.3 分区 概述 分区技术是数据库内部技术,对于我们开发者来说,一张表分区后仍然是一张表,我们开发操作表名没有变化。仅仅是将表分成若干物理区。 为什么不使用分区 受单机因素限制(大量连接、高吞吐),虽然每个区是独立的,但是分区表的总入口就一个。 二 分库分表的中间件 我们 阅读详情

相关推荐

springboot整合sharding-jdbc实现分库分表详解

springboot整合sharding-jdbc实现分库分表详解

congge 9090

Sharding JDBC 实战 —— 分布式事务处理

在我们使用Sharding JDBC分库分表的时候,会带来另外一个问题,就是分布式事务问题,如下图所示。用户采购商品业务,整个业务包含3个微服务: 库存服务: 扣减给定商品的库存数量。 订单服务: 根据采购请求生成订单。 账户服务: 用户账户金额扣减。 这三个业务操作应该属于同一个事务,但是这些数据却分配在不同的数据库上,所以没办法采用数据库的事务来保证数据一致性。 这个时候,要解决分布式事务问题,就需要引入全局事务。 1. 什么是全局事务呢? 全局事务是一个DTP模型的事务,所谓DTP模

Java是世界上最好的语言 6737

OLED 驱动模块程序代码

作为嵌入式软件开发,可能经常会使用单片机连接驱动显示屏,实现人机交互的功能,通常可选择的有 OLED 和 LCD 等,其中相关驱动代码例程网上更是数不胜数。 本文介绍的是 OLED, 常见代表有 0.96 寸的OLED,网上也有很多相关的驱动代码,但是大部分代码都是能用即可,不是特别关注驱动代码的整体架构,以下是个人整理的 OLED 驱动代码,支持配置 SPI 和 IIC 两种接口方式(目前只是测试了 SPI,IIC 有待验证)。

大橙子的博客 4291

默默学Sharding-Sphere(五)

从本篇开始,开始对项目和源码进行一个分析学习。可能存在不准确的地方,望指出。基于版本3.1.0-M1版本。 项目结构 从项目模块拆分和依赖关系来看,大致我们可以看出各模块的主要职责和特点。 sharding-core:核心模块 sharding-transaction-core:事务模块核心 sharding-jdbc-core:jdbc核心集成模块 sharding-transaction-2pc-spi:2阶段提交事务SPI抽象 sharding-transaction-2pc-xa:XA实现 s

dxx707099957的博客 459

SAP CAP 编程模型简介

官网 CAP 是用于构建企业级服务和应用程序的语言、库和工具框架。它引导开发人员沿着经过验证的最佳实践和大量现成的解决方案来应对重复性任务的“黄金之路”。 基于 CAP 的项目受益于对领域的主要关注。我们没有深入研究过于技术性的学科,而是专注于在快速变化的云技术世界中加速开发和保护投资。 CAP 框架融合了经过验证和广泛采用的开源和 SAP 技术,如下图所示。 在开源技术之上,CAP主要增加了: 核心数据服务 (CDS) 作为我们用于域模型和服务定义的通用建模语言。 用于 Node.js 和 Ja

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1550

BGP路由聚合:自动聚合和手动聚合

路由聚合是指将多条具体的路由合并为一条聚合路由,以减少路由表的条目数。这种技术通过只向对等体发送聚合后的路由,而不发送所有的具体路由,来减小路由表的规模。同时,被聚合的路由如果发生路由振荡,也不再对网络造成影响,从而提高了网络的稳定性。

网络技术联盟站 1222

ShardingSphere分库分表5-ShardingSphere的分布式事务详解

文章目录一、ShardingJDBC分布式事务快速上手LOCAL本地事务XA事务快速上手BASE柔性事务快速上手二、分布式事务原理详解XA事务Base柔性事务ShardingJDBC扩展分布式事务管理器三、ShardingProxy分布式事务示例 一、ShardingJDBC分布式事务快速上手 ShardingJDBC支持的分布式事务方式有三种 LOCAL, XA , BASE,这三种事务实现方式都是采用的对代码无侵入的方式实现的。具体见 TransactionTypeHolder.set(Transact

roykingw的专栏 2313

5、自适应 RBF 神经网络控制方法解析

本文详细解析了基于RBF神经网络的多种自适应控制方法,包括针对函数未知、参数未知以及存在外部干扰的非线性系统的控制策略。通过李雅普诺夫稳定性理论设计自适应律,确保闭环系统稳定,并结合仿真示例和MATLAB代码实现,展示了方法的有效性。文章还对比了不同控制方法的适用场景,并给出了实际应用流程,为复杂系统控制提供了系统性解决方案。

ol789012的博客 75

springboot整合sharding-jdbc分库分表读写分离+seata分布式事务

springboot+sharding-jdbc+seata

ouyangchangxiu的博客 973

【用unity实现100个游戏之2】复刻实现经典2d平台跳跃游戏《蔚蓝 Celeste》(附工程源码)

蔚蓝》是一款备受好评的独立游戏,由游戏开发工作室开发并由发行。这款游戏于2016年首次发布,并在玩家和评论界收获了广泛赞誉。蔚蓝以其独特的艺术风格和引人入胜的故事而著称。游戏以深海为背景,玩家将扮演一个能够探索水下世界的神秘生物。游戏通过惊人的视觉表现和动态的海洋生态系统为玩家带来了令人难忘的游戏体验。无论是广阔的水下景观还是充满生机的海洋生物,蔚蓝都让玩家感受到深海的神秘和美丽。蔚蓝在玩法上注重探索和解谜。玩家可以在海底环境中自由游动,发现隐藏的地点和秘密,与各种生物互动,并解决环境谜题以继续前进。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4170

WPF在特定领域的应用:打造一款专业的图像编辑工具

WPF在特定领域的应用:打造一款专业的图像编辑工具,在软件开发的广阔领域中,Windows Presentation Foundation(WPF)以其强大的图形渲染能力和丰富的用户界面控件,为开发者提供了构建高性能、美观应用程序的平台。图像编辑工具作为一种对图形处理要求极高的应用类型,WPF 的特性使其成为理想的选择。本文将深入探讨如何使用 WPF 打造一款专业的图像编辑工具,涵盖从基础概念到实际代码实现的各个方面。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

Sharding-JDBC分布式事务详解与实战

本篇文章主要讲解了Sharding-JDBC分布式事务详解与实战,实操过程非常重要,大家一定要动手亲自实践一下,必须掌握。下节预告,ShardingProxy实战,大家敬请期待呦!!!。

Coder_ljw的博客 1913

【Bug已解决】Claude Team Plan 购买席位报错 Payment failed 解决方案

方案适用场景推荐指数检查账单历史状态排查的第一步⭐⭐⭐⭐⭐更换支付方式类型快速尝试是否能绕开问题⭐⭐⭐联系官方支持团队最终解决问题的正规渠道⭐⭐⭐⭐⭐临时过渡方案紧急用人需求的应急处理⭐⭐⭐关注官方修复进度确认属于系统性缺陷的场景⭐⭐⭐⭐Claude Team Plan 增购席位报的问题,社区反馈和实际排查表明很大概率属于平台计费系统在处理按比例分摊费用这类复杂计算链路时的系统性缺陷,而不是用户自身的支付信息填写有误。先排除自身账单历史是否存在异常。

一键难忘的博客 4185

使用Sharding-JDBC进行分表分库之增删改查和分布式事务

背景         继续上篇文章《Sharding-JDBC进行分表分库之初体验》,我们写一下删改查的小例子,因为上篇文章已经有增加了,还有要尝试的就是Sharding-JDBC提供的分布式事务。 测试例子        要注意的点有两个: 1、关于修改数据的(更新和删除)。如果只是分表或分库,根据分片字段修改即可。如果是分表分库的,需要根据分表的分片字段修改。 2、关于分布式事务,一...

Howinfun的博客 7728

目标跟踪与视频时序分析基础

两帧均有目标,却因快速移动导致检测框无重叠,仅靠交并比(IoU)无法维持身份关联。本文通过手算与纯Python实现最小跟踪流程,揭示IoU仅为位置线索,不能应对快速位移或遮挡。实验表明,即使目标真实存在,低重叠也会触发新编号。强调跟踪需结合运动预测、外观特征与阈值验证,避免误判。

Mr数据杨 2335

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SEATA + Sharding-JDBC 分库分表分布式事务

Sharding-JDBC 解决了海量数据的存储扩容、读写性能问题,但缺失分布式事务能力;SEATA AT 模式解决了跨分片数据一致性问题。两者结合是目前互联网海量数据高并发项目的标准生产架构。该方案具备零侵入、高性能、易扩展的优势,适配绝大多数电商、流水、账单、用户数据业务;但存在AT模式天生的隔离性缺陷,金融级强一致场景需要升级为模式。同时生产必须遵循小事务规范、配合兜底对账,保证分片事务百分百可靠。

只要肯攀登,终有登顶时 316

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

sharding-jdbc+seata实现分库分表,多数据源整合和seata分布式事务

sharding-jdbc+seata实现分库分表和分布式事务 sharding-jdbc 的相关理论&使用文档参考官网(https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-jdbc/) seata 的相关理论&使用文档参考官网(https://github.com/seata/seata) sharding-jdbc可以理解为增强版的驱动,用户可以通过对图中..

HTslide的博客 6467

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

SpringBoot + Sharding JDBC,一文搞定分库分表、读写分离

SpringBoot + Sharding JDBC,一文搞定分库分表、读写分离

程序员闪充宝 1690

Spring boot + Sharding JDBC 分库分表 及 分布式事务处理

Sharding JDBC 基础概念 Apache ShardingSphere 是一套开源的分布式数据库解决方案组成的生态圈,它由 JDBC、Proxy 和 Sidecar(规划中)这 3 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的数据水平扩展、分布式事务和分布式治理等功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。 Apache ShardingSphere 旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型

Java是世界上最好的语言 3123

(2)分库分表—Sharding-jdbc

Sharding-JDBC 是当当网研发的开源分布式数据库中间件,从 3.0 开始Sharding-JDBC被包含在 Sharding-Sphere 中,之后该项目进入进入Apache孵化器,4.0版本之后的版本为Apache版本。ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,由Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar(规划中)组成。Sharding-JDBC官网。

qq_45960341的博客 1320

分库分表之Sharding-JDBC

需求:商品表字段太多,每个字段访问频次不⼀样,浪费了IO资源,需要进⾏优化也就是“大表拆小表”,基于列字段进行的拆分原则⼀般是表中的字段较多,将不常⽤的或者数据较大,长度较长的拆分到“扩展表 如text类型字段访问频次低、字段⼤的商品描述信息单独存放在⼀张表中,访 问频次较⾼的商品基本信息单独放在⼀张表中垂直拆分原则把不常用的字段单独放在⼀张表;把text,blob等大字段拆分出来放在附表中;业务经常组合查询的列放在⼀张表技术负责人前瞻性思维需要提前考虑系统⼀年到两年左右的业务增⻓情况。

Stitch12的博客 1923

SpringBoot整合sharding-jdbc 实现分库分表操作

SpringBoot整合sharding-jdbc 实现分库分表操作

weixin_46619605的博客 1451

快速入门分库分表中间件 Sharding-JDBC

shardingJDBC

weixin_48526216的博客 1121

Sharding-JDBC和Mycat在分库分表中的应用

一、背景介绍 Sharding-JDBC本来是当当网内部解决分库分表的问题的一个内部组件,后来慢慢开源了然后现在捐给了Apache,成为了Apache的一个子项目,但是当当自己还在维护自己的。除了Shrading-JDBC,当当还开源了Elastic-Job、基于Dubbo的DubboX。 在Apache中,Sharding-JDBC改名叫做ShardingSphere,其包含了Sharding-JDBC和Sharding-Proxy,其中Sharding-JDBC是应...

xiaoye的博客 5343

Sharding-JDBC(一)Sharding-JDBC实现分库分表简介

Sharding-JDBC(一)Sharding-JDBC实现分库分表简介

一恍过去 1万+
上一篇: 利用mysql函数快速建立分表语句
下一篇: springboot+shardingjdbc+yml单库分表(按月分表)
yonhu123java
博客等级 码龄14年 6粉丝 47原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值