TSharding-Client 介绍
TSharding 是 应用于蘑菇街交易平台的一个简易 sharding 组件,也是一个 Mybatis 分库分表组件。
TSharding 组件目标:
-
很少的资源投入即可开发完成
-
支持交易订单表的Sharding需求,分库又分表
-
支持数据源路由
-
支持事务
-
支持结果集合并
-
支持读写分离
关键类:
-
测试用例入口 com.mogujie.service.tsharding.test#TShardingTest
-
默认走 Master 库的前缀命名 com.mogujie.trade.tsharding.route.orm.base.ReadWriteSplittingContextInitializer.DEFAULT_WRITE_METHOD_NAMES
-
SQL增强 com.mogujie.trade.tsharding.route.orm.MapperResourceEnhancer.enhancedShardingSQL
TSharding 组件接入过程:
-
引入TSharding JAR 包
-
配置所有分库的 JDBC 连接信息
-
Mybatis Mapper 方法参数增加 ShardingOrderPara/ShardingBuyerPara/ShardingSellerPara 注解
-
批量查询增加结果集合并逻辑
测试用例:
跑测试用例之前先建库建表结构;理论上是8个库,512张表,每个库64张表。如果仅仅是跑测试用例,执行下面的sql就可以跑通:
create database trade0000; create database trade0001; create database trade0002; create database trade0003; create database trade0004; create database trade0005; create database trade0006; create database trade0007; create database trade; use trade0001; CREATE TABLE `TradeOrder0064` ( `orderId` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '订单ID', `buyerUserId` bigint(20) unsigned NOT NULL COMMENT '买家的userId', `sellerUserId` bigint(20) unsigned NOT NULL COMMENT '卖家的userId', `shipTime` int(11) unsigned DEFAULT '0' COMMENT '发货时间', PRIMARY KEY (`orderId`) ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8mb4 COMMENT='订单信息表'; INSERT INTO `TradeOrder0064` (`orderId`, `buyerUserId`, `sellerUserId`, `shipTime`) VALUES (50000280834672, 1234567, 2345678, 12345678);
TSharding-Client 官网
https://github.com/baihui212/tsharding
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。