看开源中国出了这个top 50,看看大神们都出了什么样神奇的作品,看到第39个项目小编的标题是,“分布式高效 ID 生产黑科技”,这个就吸引我的眼球了,因为我的工作经验最多的就是交易流程,这个订单号就是我要解决的问题,之前我也写过一篇Twitter的Snowflake算法的学习博客。
d
码云地址:https://gitee.com/yu120/sequence 授权协议:MIT
然后 clone 下来看看,其实里面就有只有两个类 sequence 和 Systemclork
这边sequence的实现基本和Twitter的Snowflake算法差不多,看下面那个结构说明你就明白了,数据的结构,还有每一段的意义,还有局限性是什么,比如每毫秒的最多可以是多少。还有就是前面用了41位的时间戳,也限制了这种方法的使用年限,好像是69年,好像也没多少年了,那时候数据怎么处理,不错科技的进步还是很快的。
实际上用的就是这个nextId方法,获取一个ID,这边主要作者自己实现了一个系统时间SystemClock,在获取下一毫秒的方法中用到 tilNextMillis ,说明这里暗藏玄机。
作者在类的注释中写着“高并发场景下System.currentTimeMillis()的性能问题的优化”
这边主要用了定时频率去获取值,不知道这边定时任务的时间是怎么实现的,难道这样就不会与系统时间有交互吗?
只是觉得排39了,项目代码怎么这么少