TinyID

229 阅读1分钟

简介

gitee.com/yixiaodai1/…

Tinyid是用Java开发的一款分布式id生成系统,基于数据库号段算法实现,扩展了leaf-segment算法,支持了多db(master)

Tinyid的特性

  1. 全局唯一的long型id
  2. 趋势递增的id,即不保证下一个id一定比上一个大
  3. 非连续性
  4. 提供http和java client方式接入
  5. 支持批量获取id
  6. 支持生成1,3,5,7,9...序列的id
  7. 支持多个db的配置,无单点

适用场景:只关心id是数字,趋势递增的系统,可以容忍id不连续,有浪费的场景
不适用场景:类似订单id的业务(因为生成的id大部分是连续的,容易被扫库、或者测算出订单量)

核心点

  1. synchronized双重锁
  2. 工厂方法
  3. AtomicLong原子操作计数器

image.png

获取ID代码流程图

image.png