
项目 SnowFlake雪花算法
背景现在的服务基本是分布式微服务形式的而且大数据量也导致分库分表的产生对于水平分表就需要保证表中id的全局唯一性对于MySQL而言一个表中的主键id一般使用自增的方式但是如果进行水平分表之后多个表中会生成重复的id值那么如何保证水平分表后的多张表中的id是全局唯一性的呢如果还是借助数据库主键自增的形式那么可以让不同表初始化一个不同的初始值然后按指定的步长进行自增例如有张拆分表初始主键值为自增步长为当然也有人使用UUID来作为主键但是UUID生成的是一个无序的字符串对于MySQL推荐使用增长的数值类型值作为主键来说不适合也可以使用Redis的自增原子性来生成唯一id但是这种方式业内比较少用upl