面试被问分布式ID怎么办? 滴滴(Tinyid)甩给他
引言 接着 《一口气说出 9种 分布式ID生成方式,面试官有点懵了》 来继续详细的介绍分布式ID生成器,大家比较感兴趣的 美团(Leaf) 、 滴滴(Tinyid) 、 百度(uid-generator) 三个开源项目,美团(Leaf)已经讲完,详见 《9种分布式ID生成之美团(Leaf)实战》 ,今天结合实战搞一下滴滴开源的( Tinyid )。 Tinyid介绍 Tinyid 是滴滴开发的一款分布式ID系统, Tinyid 是在 美团(Leaf) 的 leaf-segment 算法基础上升级而来,不仅支持了数据库多主节点模式,还提供了 tinyid-client 客户端的接入方式,使用起来更加方便。但和美团(Leaf)不同的是,Tinyid只支持号段一种模式不支持雪花模式。 Tinyid的特性 全局唯一的long型ID 趋势递增的id 提供 http 和 java-client 方式接入 支持批量获取ID 支持生成1,3,5,7,9…序列的ID 支持多个db的配置 适用场景 :只关心ID是数字,趋势递增的系统,可以容忍ID不连续,可以容忍ID的浪费 不适用场景 :像类似于订单ID的业务,因生成的ID大部分是连续的,容易被扫库、或者推算出订单量等信息 Tinyid原理 Tinyid 是基于号段模式实现,再简单啰嗦一下号段模式的原理:就是从数据库批量的获取自增ID