分布式id

分布式id

基本要求:

全局唯一,有序递增,高可用性

解决方案:

UUID,数据库自增id,号段模式,redis生成,zookeeper生成,雪花算法

uuid:
基于当前时间,随机数,网卡的mac地址等数据生成,他能保证同一时空所有机器上都是唯一的
优点是本地生成,性能高,全球唯一
缺点是没有排序,不是趋势递增,uuid过长占用磁盘和内存空间较大,影响查询效率,同理需要消耗更多的网络资源

auto_increment:
需要一个数据库实例,任何业务系统需要分布式ID时,都来访问该数据库实例来获得分布式ID
优点是操作简单,分布式id自增有序
缺点是需要独立数据库实例,成本高,数据库压力大,性能有限

号段模式:
从数据库批量获取自增id,如1000个,用完后再去取
优点是不需要每次都重新取,降低数据库压力,提高性能
缺点是实现难度复杂,id存在内存中,每次重启服务器会造成id不连续

redis
优点,自增,若redis是集群可以防止单点故障
缺点,依赖redis,如果是单点就会出现单点故障

雪花算法
由推特开源的,由64位整数组成的分布式id,性能较高,并且在单机递增,bit位+时间戳+机器id+序列号
优点:时间戳在高位,序列在低位,调整bit位满足不同业务要求,没有依赖,使用方便
缺点:时钟回拨,每个机器需要配置不同的worker id
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值