不重复的id生成策略
最近新公司新搞项目
需要定一个不重复的id生成策略。
以前mysql 自增策略第一个就被PASS了
查阅了相关资料。
大概有的策略如下
第一个就是UUID
这个大家都比较熟悉了
结合机器的网卡、当地时间、一个随记数来生成UUID
优点:本地生成,性能较好
缺点:长度过长,而且还是无序的
第二个就是基于数据库生成
单独搞一台数据库,
设置自动增长,用于记录增长值
然后所有id生成都去请求它
优点:简单,高效
缺点:需要单独部署,大并发下性能比较低
第三个 Twitter的snowflake算法
这个没有去深入了解
只是大概知道
snowflake是Twitter开源的分布式ID生成算法,
结果是一个long型的ID。
其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生 4096 个 ID),最后还有一个符号位,永远是0
优点:生成的id是long,递增
缺点:每台机器上的时间不一样,会产生不了递增的情况
第四个 zookeeper生成id
第五个 MongoDB的ObjectId生成id
这两个了解比较少没有深入
直接pass过
第六个 redis生成id
redis现在基本的项目都会用到
很好用的缓存
Redis是单线程的,所以也可以用生成全局唯一的ID。
优点:数字ID天然排序,对分页或者需要排序的结果很有帮助,高并发也行,可以设置Redis集群来生成
缺点:网上有说引入redis配置啥的麻烦,代码量多之类的,我感觉springboot,咔咔咔,2,3下就搞定了
所以后面就选用redis生成id
还有没有其他策略比较好用,
可以留言下,
大家一起进步
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04