1,为什么需要分布式id?
分表后要保证分布式集群环境下id的全局唯一性。所以分表之后,不能使用主键自增。
2.解决方案
(1)雪花算法
雪花算法是Twitter推出的⼀个⽤于⽣成分布式ID的策略。
雪花算法是⼀个算法,基于这个算法可以⽣成ID,⽣成的ID是⼀个long型,那么在Java中一个long型是8个字节,算下来是64bit,如下是使⽤雪花算法⽣成的⼀个ID的⼆进制形式示意:
(2)借助Redis的Incr命令获取全局唯⼀ID
Redis Incr命令将 key 中储存的数字值增⼀。如果 key 不存在,那么 key 的值会先被初始化为0,然后再执⾏ Incr 操作。
代码示例:
Java代码中使⽤Jedis客户端调⽤Reids的incr命令获得⼀个全局的id(此处我们就是连接单节点,也不使⽤连接池)