天天看點

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的影響。

2.電商訂單系統的設計

繼續閱讀