分布式唯一ID实现

分布式唯一ID实现
在业务开发中,大量场景需要用到唯一ID,比如系统流水号,订单号等等。
那么,分布式唯一ID有哪些特征呢?

  1. 唯一性: 生成的ID全局唯一。
  2. 高可用: 可保证在高并发下的可用性,确保任何时候都能正确生成ID。
  3. 自主性:分布式环境下不依赖中心认证,即可自行生成ID。
  4. 安全性:不暴露系统和业务信息。
  5. 有序性:生成的ID按某种规则有序,便于数据库插入及排序。(某些情况下也需要无序ID)

常见的分布式唯一ID生成方法有哪些?

  1. 数据库自增ID
    使用数据库的ID自增策略。
    优点:
    简单,天然有序。
    缺点:
  1. :并发性不好。
  2. :依赖数据库,数据库故障后不可用。
  1. Redis生成ID
    redis的所有命令操作都是单线程的,本身提供像incr和increby这样的自增原子命令,能保证生成的ID唯一有序。
    优点:
  1. :并发性能好
  2. :数字ID天然有序,对分页或排序结果很有帮忙
    缺点:
  3. :如果系统中没有redis,需要引入新组件,增加系统复杂度。
  1. UUID生成
    结合机器的网卡(基于名字空间/名字的散列值MD5/SHA1),当地时间(基于时间戳&时钟序列)及一个随机数来生成UUID
    优点:本地生成,没有网络消耗,生成简单,没有高可用风险。
    缺点:
  1. :不易于存储:UUID太长,16字节128位。
  2. :信息不安全,基于MAC地址生成的UUID的算法可能会造成MAC地址泄漏。
  3. :UUID无序,不利于数据库查询,查询效率低。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值