TaurusDB MySQL 分布式分表承载 Bidfins 海量雅虎代拍订单实战

举报
yd_250835498 发表于 2026/07/20 10:38:14 2026/07/20
【摘要】 摘要Bidfins 海量竞拍、保证金单表千万级卡顿,基于华为云 TaurusDB 读写分离 + 按月分表,提供 MyBatis 分表代码、保证金并发更新事务代码,账单查询速度提升 9 倍。一、痛点保证金并发更新行锁、历史订单查询慢、财务对账报表超时。二、方案垂直分库:资金库 / 竞拍库 / WMS 仓储库;竞拍订单按 user_id 哈希分 32 表,账单按月分表,1 主 4 只读分离。三、...

摘要

Bidfins 海量竞拍、保证金单表千万级卡顿,基于华为云 TaurusDB 读写分离 + 按月分表,提供 MyBatis 分表代码、保证金并发更新事务代码,账单查询速度提升 9 倍。

一、痛点

保证金并发更新行锁、历史订单查询慢、财务对账报表超时。

二、方案

垂直分库:资金库 / 竞拍库 / WMS 仓储库;竞拍订单按 user_id 哈希分 32 表,账单按月分表,1 主 4 只读分离。

三、核心 Java 代码

1)分表 Mapper(MyBatis-Plus)

java

运行

// 竞拍订单实体 按月分表后缀 _202606@TableName("t_bid_order_${month}")public class BidOrder {

    private Long id;

    private Long userId;

    private String itemId; //雅虎/煤炉商品ID

    private Integer bidType; //1雅虎代拍 2煤炉自动代拍

    private BigDecimal priceJpy;

    private Integer status;

    private LocalDateTime createTime;}

2)保证金并发扣减事务(TaurusDB 行锁)

java

运行

@Transactional(rollbackFor = Exception.class)public void deductMargin(Long userId, BigDecimal feeJpy) {

    // 悲观行锁 SELECT ... FOR UPDATE

    Margin margin = marginMapper.selectByIdLock(userId);

    if(margin.getBalanceJpy().compareTo(feeJpy) < 0){

        throw new RuntimeException("保证金余额不足");

    }

    margin.setBalanceJpy(margin.getBalanceJpy().subtract(feeJpy));

    marginMapper.updateById(margin);

    // 写入资金流水

    MarginLog log = new MarginLog();

    log.setUserId(userId);

    log.setChangeJpy(feeJpy.negate());

    log.setType(2); //竞拍扣费

    logMapper.insert(log);}

3)读写分离调用示例

java

运行

// 注解走只读节点 查询历史账单@DS("bid-read")public List<MarginLog> listUserLog(Long userId, LocalDate start, LocalDate end) {

    LambdaQueryWrapper<MarginLog> wrapper = Wrappers.lambdaQuery();

    wrapper.eq(MarginLog::getUserId, userId);

    wrapper.between(MarginLog::getCreateTime, start, end);

    return marginLogMapper.selectList(wrapper);}

四、指标

单库 TPS 1800→12000;对账查询 16s→1.7s;资金无锁等待超时。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。