分布式ID
- 背景
- Snowflake(雪花算法)
背景
分布式系统,用什么做为主键呢?
- uuid
太长(MySQL官方有明确的建议主键要尽量越短越好[4],36个字符长度的UUID不符合要求。)、
无规律(在InnoDB引擎下,UUID的无序性可能会引起数据位置频繁变动,严重影响性能。) - Snowflake
- Leaf
https://tech.meituan.com/2017/04/21/mt-leaf.html - UidGenerator
https://github.com/baidu/uid-generator/blob/master/README.zh_cn.md
Snowflake(雪花算法)
- 简介
第一位 占用1bit,其值始终是0,没有实际作用。
2.时间戳 占用41bit,精确到毫秒,总共可以容纳约69年的时间。
3.工作机器id 占用10bit,其中高位5bit是数据中心ID,低位5bit是工作节点ID,做多可以容纳1024个节点。
4.序列号 占用