喝茶聊方案:分库分表之分片键和分片规则

200 阅读2分钟

分片键

这里列举常见的分片键字段
用户id:按照买家id或卖家id分片
订单号:按照订单号分片
创建时间:按订单创建时间分片
同时选择多个字段:比如说按所在城市,然后再按创建时间分片

分布式ID生成规则

  • 数据库奇偶数生成
  • redis原子自增,zookeeper生成自增
  • 雪花算法
  • 预分配(预分配号段,美团Leaf框架原理)

分片规则

这里列举常见的分片规则

哈希

比如针对订单号按哈希分片。
优点:哈希分片数据分布均匀,不容易出现热点问题
缺点:后期迁移和扩容需要迁移旧数据,有一定的维护成本

时间

按创建时间分片,年,月,日
优点:天然水平扩展 缺点:按时间分片容易出现热点问题,近期时间访问量大,远期时间访问量少

数值范围

比如1-2000W,2000W-4000W

其他分片键和分片规则

电商订单:可以按跟人相关的维度分片,比如说买家id,买家id.
文章内容:娱乐社交行业中,详情页对应评论可以按,文章id分.

这里确定分片键的原则,主要还是以满足系统访问场景最多,访问频次最高的的功能确定分片键。
如果有无法确定一个分片键,比如说订单按买家id分片,那卖家也要用订单数据,也要兼顾卖家的需求,可以用另外表按卖家维度继续分库分表