目录
一、能解决什么问题?
二、详解雪花算法
三、如何实现雪花算法?
一、能解决什么问题?
其实就是用来解决分布式ID,随着业务的增长,你的某张表可能要占用很大的物理存储空间,为了解决该问题,后期使用数据库分片技术。将一个数据库进行拆分,通过数据库中间件连接。如果数据库中该表选用ID自增策略,则可能产生重复的ID,此时应该使用分布式ID生成策略来生成ID。
这么一对比,还是雪花算法比较占优势。
二、详解雪花算法
snowflake是Twitter开源的分布式ID生成算法,结果是一个long型的ID。其核心思想是:使用41bit作为毫秒数,10bit作为机器的ID(5个bit是数据中心,5个bit的机器ID),12bit作为毫秒内的流水号(意味着每个节点在每毫秒可以产生4096个ID),最后还有一个符号位,永远是0。
三、如何实现雪花算法?
使用MybatisPlus生成雪花算法,代码很简单:
@Data
@TableName(value = "t_user")
public class User {// IdType.ASSIGN_ID代表生成雪花算法@TableId(value = "id", type = IdType.ASSIGN_ID)private Long id;