# 《Seckill秒杀系统》第63章:订单分库分表编码实现

作者:冰河
星球:http://m6z.cn/6aeFbs (opens new window)
博客:https://binghe.gitcode.host (opens new window)
文章汇总:https://binghe.gitcode.host/md/all/all.html (opens new window)
源码获取地址:https://t.zsxq.com/0dhvFs5oR (opens new window)

沉淀,成长,突破,帮助他人,成就自我。

  • 本章难度:★★★☆☆
  • 本章重点:重点理解并掌握秒杀系统订单数据的分库分表实现方式,重点掌握订单数据的分库分表实现,并能够做到举一反三将分库分表设计的核心思想与落地方案灵活运用到自身实际项目中。

大家好,我是冰河~~

在前面的文章中,我们已经实现了对秒杀商品库存的分库分表和分桶设计实现,对数据进行分库分表和分桶设计后,能够极大的提升库存数据的读写性能。并且对于秒杀订单来说,我们也设计了秒杀订单的分库分表方案,那这些分库分表的方案实现起来复杂吗?

# 一、前言

秒杀系统由最初的单体应用项目和单数据库模式,逐渐演变为微服务和分布式数据库模式,不仅提升了系统的整体性能,还从一定程度上提高了系统的稳定性。像下单扣减库存这种典型的高并发读写场景,使用单库单表来抗并发是远远不够的,我们对库存数据进行了分库分表和分桶设计与实现,那对于订单数据呢?我们也要进行一定的优化措施。

# 二、本章诉求

从代码层面实现对秒杀订单的分库分表,要实现具体数据在物理数据库的存储对上层业务无感知,也就是上层业务无需知晓数据的具体存储位置,只需要传入简单的参数就能够正确保存或者查询数据。

另外,对于秒杀系统来说,对订单数据要实现分别按照用户和商品进行分库分表,从用户维度和商品维度提升订单数据的读写性能。

# 三、分库分表实现

本节,我们还是基于ShardingSphere来实现分库分表操作,主要从配置项目环境和建库建表两个方面实现订单数据的分库分表操作。

# 3.1 配置项目环境

(1)添加项目依赖

主要是在项目的pom.xml文件中添加ShardingSphere依赖,如下所示。

<properties>
    <sharding.jdbc.version>4.1.1</sharding.jdbc.version>
</properties>

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
    <version>${sharding.jdbc.version}</version>
</dependency>
1
2
3
4
5
6
7
8
9

(2)添加配置

在seckill-order-starter工程下的src/main/resources/application.properties文件下添加关于ShardingSphere的配置,如下所示。

# 查看完整文章

加入冰河技术 (opens new window)知识星球,解锁完整技术文章与完整代码