TSharding-ClientMybatis 分庫分表組件
TSharding 是 應(yīng)用于蘑菇街交易平臺的一個簡易 sharding 組件,也是一個 Mybatis 分庫分表組件。
TSharding 組件目標:
很少的資源投入即可開發(fā)完成
支持交易訂單表的Sharding需求,分庫又分表
支持數(shù)據(jù)源路由
支持事務(wù)
支持結(jié)果集合并
支持讀寫分離
關(guān)鍵類:
測試用例入口 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 方法參數(shù)增加 ShardingOrderPara/ShardingBuyerPara/ShardingSellerPara 注解
批量查詢增加結(jié)果集合并邏輯
測試用例:
跑測試用例之前先建庫建表結(jié)構(gòu);理論上是8個庫,512張表,每個庫64張表。如果僅僅是跑測試用例,執(zhí)行下面的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 '發(fā)貨時間', PRIMARY KEY (`orderId`) ) ENGINE=InnoDB AUTO_INCREMENT=10000 DEFAULT CHARSET=utf8mb4 COMMENT='訂單信息表'; INSERT INTO `TradeOrder0064` (`orderId`, `buyerUserId`, `sellerUserId`, `shipTime`) VALUES (50000280834672, 1234567, 2345678, 12345678);
評論
圖片
表情
