雪花算法兼具唯一性和有序性,常用于分布式环境,网上关于雪花算法的讲解很多,但大多不够完整,不能直接拿来用。因此这里不再赘述雪花算法的原理,而是对算法的相关代码做了一个整理,便于直接使用。
值得注意的是,此处提供的工具类不能解决由于时钟回拨带来的 ID 重复问题,在应用中需要自行根据实际情况解决;另外,数据中心标识和机器标识也可根据项目实际情况进行替换,实现定制化,不一定非要根据 IP 和 hostName 来生成。话不多说,上源码:
1 | import org.apache.commons.lang3.RandomUtils; |
(完)