2
回答
分享一段生成分布式全局唯一ID的代码
华为云实践训练营,热门技术免费实践!>>>   

首先,说一下为什么要自己生成去全局唯一ID:

  • 在分布式系统中,很难依赖数据库生成ID(性能上的瓶颈、不想绑定在某个数据库的实现方法,比如MongoDB的ObjectId)
  • 需要一个可以根据时间粗略排序的ID,所以类似UUID的算法不行

我的具体实现办法,参考自Google Firebase公布的算法https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html?m=1,此算法本身类似Twitter Snowflake,区别在于长度更长,20个字符串,Snowflake为64bit数字,因此时间戳长度可以支持到AD10000+。另外不再需要输入机器ID、数据中心ID之类的数据,采用纯随机算法。同样可以保证粗略的时间排序。

最后附上我的Java代码实现,线程安全,性能优异:

https://gist.github.com/longkerdandy/a296b7a084fd191af6e4176eed168812

<无标签>
举报
浪客Dandy
发帖于3个月前 2回/622阅
顶部