单号构成:
TIMESTAMP + ZOOKEEPER NODE NUMBER + SEQUENCE LOCAL + HASH(goupID/shopID)
组成部分说明
1.timestamp 32位unix时间戳,包含年月信息,用于分表
2.zookeeper node number: 通过zookeeper获取唯一node number作为服务器ID,长度为8位(128)用于解决机器间相同时间戳的ID冲突。
3.sequence local:服务器自增序列ID,长度12位(2056)用于解决同一服务器相同时间戳的ID冲突
4.goupID/shopID 的hash值,取4096模,容量为4096,即最大分成4096个库,12位
单号长度及性能分析
总位数:32(timestamp) +8(zookeeper node数) + 12(sequenceNo) + 12(hash) = 64
最多部署256台服务器
单台服务器每秒处理新增订单限额为4098(sequence local范围决定)
总容量每秒新增订单 256*4096 = 1048576(百万数量级)
最多支持4个机房(0-3)
路由策略
DBIndex = shopID%64
tableIndex = shopID/64%64