# shortURL **Repository Path**: lcsolute/short-url ## Basic Information - **Project Name**: shortURL - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-29 - **Last Updated**: 2021-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 雪花算法 使用雪花算法生成全局唯一 ID 比较其他方法: 1. UUID 优点代码简单,性能比较好。缺点没有排序,无法保证按序递增;其次是太长了比较长,存储数据库占用空间比较大,不利于检索和排序。 2. 数据库自增主键,过于依赖数据库,那么受限于数据库的性能会导致并发性并不高;再来就是如果数据量太大那么会给分库分表会带来问题;并且如果数据库宕机了,那么这个功能是无法使用的。 3. Redis 数据会丢失,即便是redis有RDB和AOF,也会丢失不能保证。 雪花算法: 基于时间生成 ID,基本保证有序性。 > 0(1位符号位,且始终为0)|时间戳(41位)|工作机器id(10位)|序列号(12位) 雪花算法长度为64bit,且有如下特征: 1. 最高位是符号位,始终为0 2. 41位的时间戳,精度位毫秒级,可使用69年 3. 10位的机器码,支持1024个节点 4. 12位的计数序列号,自增。同一节点,同一毫秒最多产生4096个序号 在此基础我将机器码分为两部分,一部分 3bit 代表机房,另一部分代表机器 7 bit。 在同一节点上,同一毫秒最多产生 4096 个序号。最多使用 69 年