#高并发下单主要包括以下几个方面:
- 分库分表
- 多应用实例全局唯一订单号
- 数据库连接
- 买家查询订单
- 卖家查询订单
- 扩容问题
- 业务拆分
一、分库分表
随着订单量的增长,数据库的发展主要经历以下几个步骤:
- 1主-1从架构
- 双主-多从架构,读写分离
- 表分区,提高并发
- 分表,提高并发
- Master更换SSD
- 分库,分表,提高并发
###分库分表实现过程
订单分成16个库,每个库64个表进行存储,总共1024个表,mysql单表性能超过千万级别会导致性能严重下降,假设按千万计算,最高可以存储百亿级订单。随着存储问题的解决,但复杂度会随着增加:
首先是多库怎么保证生成的订单号全局唯一;
其次查询复杂度的增加;
买家查询订单时,应该去哪个库哪个表里查找,卖家应该去哪查;
再大的存储量,随着数据量的增长,终究是会遇到瓶颈,该怎么扩容。
##二、全局唯一订单号
这里采用Twitter snowflake方案,全剧唯一ID生成由:时间戳+机器ID+自增序列(+userid后两位);
订单的生成过程直接在应用实例中生成,直接在内存中计算,且计算过程分散到每台应用实例中,解决性能问题,userid后两位在后面解释。
##三、数据库连接问题
分库分表后,要