分布式标识 Distributed ID-01-Overview
2018年9月5日小于 1 分钟
分布式 ID 生成的需求
不依赖数据库。
详细理解原理
(1)写文件。提前取1000个,然后将下一个值写入文件。
(2)预取+时间戳+线程好+机器码
时间时钟怎么保持一致?
id 递增的线程安全,持久化。
基础知识
网卡 线程 并发安全 持久化 (如果递增)
位运算,进制转换。
常见参考实现
UUID
GUID
timestampe+randomNum
snowflake
serialId 生成策略
基于 oracle/redis 的设计
设计步骤
单机版+不停机+单线程
- 基本
long++
单机版+不停机+多线程
- 线程安全
AtomicLong
- 线程号
停机
持久化:
文件
database
redis
保证分布式可用的,一般只有后两个。
分布式
uuid X
timestampe+randomNum X
snowflake
美团 id
百度 id
时钟回拨问题
参考资料
贡献者
binbin.hou