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

推荐一个插件,那就是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

原文发布于微信公众号 - BeJavaGod(wxleechenxiang)

原文发表时间:2016-07-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网杂技

关于Java面试,你应该准备这些知识点

马老师说过,员工的离职原因很多,只有两点最真实: 钱,没给到位 心,受委屈了 当然,我是想换个平台,换个方向,想清楚为什么要跳槽,如果真的要跳槽,想要拿到一个理...

3897
来自专栏程序员互动联盟

【编程基础】聊聊C语言-磨刀不误砍柴工

看到上篇讲的《程序和编程语言》引发了大家的热议,小编很是激动。不过被人评论说是不懂编程,小编还真是郁闷了一下下,在此声明小编可是货真价实的“程序猿”哦。言归正传...

4119
来自专栏木宛城主

浅谈 SOLID 原则的具体使用

SOLID 是面向对象设计5大重要原则的首字母缩写,当我们设计类和模块时,遵守 SOLID 原则可以让软件更加健壮和稳定。那么,什么是 SOLID 原则呢?本...

2289
来自专栏机器之心

放弃Python转向Go语言:我们找到了以下9大理由

选自Stream 作者:Thierry Schellenbach 机器之心编译 参与:黄小天、李亚洲 转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有...

66911
来自专栏java思维导图

程序员,请优先提高代码的可读性

现在,当有人提及“优化”一词时,他们通常是指“优化执行时间”,除非他们明确表明要优化GPU的内存消耗,网络流量等等。

1004
来自专栏数据派THU

放弃Python转向Go语言:这9大理由就够了 !(附代码)

来源:机器之心 作者:Thierry Schellenbach 本文为你介绍八个短时间可以完成的趣味机器学习项目。 转用一门新语言通常是一项大决策,尤其是当你的...

60812
来自专栏顶级程序员

Java 9、10、11,谁才是Java程序员的本命?

之前,我们在《Java 10无跳票发布,主推的新特性引争议》的文章中做了一个小的调查,主要是调查现在的Java程序员都在使用哪个版本的Java?根据调查结果,绝...

973
来自专栏Crossin的编程教室

【每周一坑】特殊的生日

好吧,我在跳票的道路上又双叒叕前进了一步……今天终于厚着脸皮来更新【每“周”一坑】啦。感谢在后台孜孜不倦催促我的同学们。 在出题前,先插两句: 上次关于 Pyt...

35211
来自专栏Fundebug

JavaScript一团乱,这是好事

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

23711
来自专栏王清培的专栏

.NET项目开发—浅谈面向接口编程、可测试性、单元测试、迭代重构(项目小结)

阅读目录: 1.开篇介绍 2.迭代测试、重构(强制性面向接口编程,要求代码具有可测试性) 2.1.面向接口编程的两个设计误区 2.1.1.接口的依赖倒置 ...

2059

扫码关注云+社区

领取腾讯云代金券