一次复杂的雪花算法使用总结

一、雪花算法简介:

1、雪花算法是Twitter 开源的分布式、自增长 id 生成算法;

2、雪花算法生成的id是一个无符号长整型(unsigned long)的id,它占64个bit(8*8);

二、项目背景:

1、多台服务器组成的集群;

2、每台服务器同时启动多个worker;

3、每个worker使用雪花算法生成自增长id、再通过mycat进行批量入库。

三、需求分析:

1、自增长;

2、分布式;

显然,雪花算法很适合我们。

四、问题分析及解决方案:

1、Q:如何确保生成的id为正?

A:让id的第一个bit位固定为0。

2、Q:如何确保id自增?

A:使用毫秒级时间戳。

3、如何确保集群中不同的机器上的生成id不重复?

A1:每台服务器有一个固定的机器id(hostid),这个能确保集群中不同的机器上的生成id不重复。

A2:给每台服务器配置一个id,用这个id代替hostid,这个能确保集群中不同的机器上的生成id不重复。

4、如何确保同一台机器上不同的worker生成的id不重复?

A1:每个worker即一个进程(pid),可以取进程id来区别不同worker。

A2:将每个worker的pid映射成对应的workerid,并写入配置文件中。

5、如何确保同一worker的同一毫秒内生成的id

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值