简介
Tinyid是用Java开发的一款分布式id生成系统,基于数据库号段算法实现,扩展了leaf-segment算法,支持了多db(master)
Tinyid的特性
- 全局唯一的long型id
- 趋势递增的id,即不保证下一个id一定比上一个大
- 非连续性
- 提供http和java client方式接入
- 支持批量获取id
- 支持生成1,3,5,7,9...序列的id
- 支持多个db的配置,无单点
适用场景:只关心id是数字,趋势递增的系统,可以容忍id不连续,有浪费的场景
不适用场景:类似订单id的业务(因为生成的id大部分是连续的,容易被扫库、或者测算出订单量)
核心点
- synchronized双重锁
- 工厂方法
- AtomicLong原子操作计数器