2.电商订单系统的设计
参考博客:大众点评是如何实现分库分表的
http://www.360doc.com/content/18/0126/10/40769523_725195148.shtml
①订单部分数据库的设计
【2.电商订单系统的设计】
文章图片
②订单号的生成(全局唯一ID)
由于订单号的高并发,使用百度开源的,基于Snowflake算法的全局唯一ID生成器UidGenerator。源码地址:https://github.com/baidu/uid-generator
美团提供的分布式ID:Leaf:美团分布式ID生成服务开源
订单号的规则:唯一ID+用户ID(取4位)
商家订单号的规则:唯一ID+商家ID(取4位)
③基于买家与卖家两个维度的分库分表
买家是1套库,新增订单后,再发送MQ消息,同步到卖家库。
步骤:
1.分库分表依据,根据订单号中买家ID进行Hash取模,这样同一个买家的所有订单都会存入同一个表中,例如:先对库进行取模,再对表取模,从而确定订单应该在哪个库哪个表中,可以使用阿里的中间件mycat实现,编写mycat的分库分表规则。
2.将订单号消息发送到MQ,根据卖家ID生成卖家全局唯一卖家订单ID,以下为卖家的订单表,使用与买家分库分表同样的规则,将商家的所有订单存入同一个表中。
3.利用一致性Hash算法减少离散分片在拓展的时候需要重新hash的影响。
文章图片
推荐阅读
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 单点登陆
- 操作系统|[译]从内部了解现代浏览器(1)
- 游乐园系统,助力游乐园管理
- 中国MES系统软件随工业化成长
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Cesium|Cesium 粒子系统学习
- Android系统启动之init.rc文件解析过程
- 程序员|【高级Java架构师系统学习】毕业一年萌新的Java大厂面经,最新整理
- 内容平台做电商的三个优势