https://mp.weixin.qq.com/s/qztRf1yDazLc7dfqU707mA
1. 是什么?
全局唯一ID
2. 条件
-
全局唯一:必须保证ID是全局性唯一的,基本要求
-
高性能:高可用低延时,ID生成响应要块,否则反倒会成为业务瓶颈
-
高可用:100%的可用性是骗人的,但是也要无限接近于100%的可用性
-
好接入:要秉着拿来即用的设计原则,在系统设计和实现上要尽可能的简单
-
趋势递增:最好趋势递增,这个要求就得看具体业务场景了,一般不严格要求
3. 生成方式
-
UUID:无序U、不具备自增特性、长度过大
-
数据库自增ID:DB存在宕机风险,无法抗住高并发
-
数据库多主模式:基于数据库集群模式:设置起始值和歩长。不利于后续扩容,而且实际上单个数据库自身压力还是大,依旧无法满足高并发场景。
-
号段模式
-
Redis
-
RDB会定时打一个快照进行持久化,假如连续自增但redis没及时持久化,而这会Redis挂掉了,重启Redis后会出现ID重复的情况。
-
AOF会对每条写命令进行持久化,即使Redis挂掉了也不会出现ID重复的情况,但由于incr命令的特殊性,会导致Redis重启恢复的数据时间过长。
-
-
雪花算法(SnowFlake)
-
滴滴出品(TinyID)
-
百度 (Uidgenerator)
-
美团(Leaf)
网友评论