前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >插件推荐 - twitter分布式主键id生成器与SID

插件推荐 - twitter分布式主键id生成器与SID

作者头像
风间影月
发布2018-04-04 16:09:46
1.6K0
发布2018-04-04 16:09:46
举报
文章被收录于专栏:BeJavaGodBeJavaGod

推荐一个插件,那就是idworker,用了一年了,还是挺好用,先来说说干嘛的吧,鉴于现在主键的生成模式先来探讨一下

1、id自增:比较普遍,但是在数据备份恢复的时候,容易出错,只适用于小数据量的表,或者小型后台管理系统

2、uuid:uuid可以保证不重复,但是不建议使用,理由是实在太长了,一窜字符串不人性化,uuid适合token,据我所知,我一朋友的公司的部分项目的所有id都是使用的uuid,鉴于是个大型erp,也就无所谓了...

3、时间戳+随机数字:比较简单的做法,可以这么做,但是不建议大型系统使用

4、使用redis自增,这样就需要搭建单独的一个id服务器,每次id使用后就要+1,由于redis是单线程的,适用于这样的模式,当然了,阿里的redis不能用,理由是阿里redis是多线程的,自己重新开发过的了,使用redis还有个场景是用来做秒杀,这个是后话了,以后再聊

5、分布式idwoker,这个是twiter自己开发维护的一个id生成器,非常好用,可以分布式部署,也能直接使用,非常方便,可以说基本上不会发生id重复的情况,而id看似也很人性化

这是正在使用的订单表id,可以看出,id为16位,外加10位sid,sid是simple idworker的简写

这是腾讯天天快报的主键,可以看到也是同样的做法,由此可证,非常实用

看看用法:

首先你要在spring配置文件中声明,这样表示他是个单例,idworker要在单例下使用,不然id会重复

然后注入

最后直接nextShort就可以使用

相关代码如下,有兴趣可以看看,一个是server端,一个是client端

https://github.com/leechenxiang/idworker

https://github.com/leechenxiang/idworker-client

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-07-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BeJavaGod 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档