0
点赞
收藏
分享

微信扫一扫

分库分表 路由策略与全局ID

c一段旅程c 2022-05-03 阅读 36

分库分表支持的场景

用户的角度 : 查询订单信息
商家角度: 获取商家订单的角度.

用户下单后, 可能查询多个表.
根据一定的规则, 让同一个用户, 下单都落在同一个表中.

路由key:
根据用户id , 作为路由的key , 对表的数量进行取模.

多库多表
先找库, 再找表.

先根据用户的id , 对数据库的数量进行取模, 再去找对应的表.
在找对应表的时候, 除以表的数量, 再对表的数量进行取模, 防止根据库进行路由后, 只插入到某一个表中去.
在这里插入图片描述
商户的路由策略:
买家下完单之后, 发送订单消息到mq, 卖家去消费这个mq , 再根据商家id 进行路由, 插入商家的订单表中.

全局ID

引入全局id 的服务.

全局唯一id的算法, 雪花算法.

雪花算法


第一部分: 0 表示正数
第二部分: 41位时间戳
第三部分: 10位. 5位的数据中心, 5位的机器id. 2^10 = 1024. 在同一个时间戳下, 最多允许1024台机器, 得到全局唯一id .
第四部分: 12位的序列号 2^12 = 4096 在同一个时间戳下, 最多允许1024台机器来获取全局唯一id, 最多可以为每台机器分配4096个id.

64 位的bit

举报

相关推荐

0 条评论