打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
适用于分布式唯一标识码的生成算法有哪些?

现在分布式大行其道,由于数据库分布在不同的服务器上,如果用传统的自增等方式生成ID,不同的数据库上的ID难以保证不重复,而有业务影响风险!

可以说唯一标识码是分布式数据库所要面临的第一道关!

我接触分布式多年,对于唯一标识码的生成遇见过这么几种方式!

1,UUID:算法有很多种,使用同一台机器上的时间生成字节来区分同一台机器上的不同ID,使用IEEE机器识别号或者IP地址等来区分不同机器上的ID,这样不同的机器间和同一个机器都进行了区分,保证生成的UUID是全局唯一的!

JAVA有自带的UUID.randomUUID()算法来实现!

局限性:生成的ID没有顺序性!

2,snowflake:twitter自己开发的唯一ID算法,使用41位时间序列,10位机器号的标志,12位的顺序的计数,每毫秒可以生成4096个唯一序列号!

3,基于redis的原子函数incr或者incrby方法:因为redis是单线程的工作模式,利用自增方法可以得到全局唯一的ID,不过如果是没有引入redis组件的,可能需要额外的成本!


4,mongodb的objectid:因为mongodb一开始就是为了分布式而生,所以生成objectID算法也保证全局唯一性!生成的objectID也是由时间戳+机器唯一标志+进程ID+计数器!每秒钟可以生成2563个不一样的objectID!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
如何在分布式场景下生成全局唯一 ID ?
3个必知必会分布式幂等方案!
分布式系统唯一ID生成方案
分布式ID生成--雪花算法
分布式系统ID生成办法
唯一ID生成算法剖析,看看这篇就够了
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服