全局唯一id方案
mysql自增
优点:简单
缺点:扩容复杂,业务增大时数据迁移困难
基于时间戳和随机字符串
优点:对人比较友好
缺点:随机数生成不易控制
UUID
优点:简单粗暴,性能好,全球唯一,基本不会有性能问题
缺点:占用空间大,无序,查询效率低
变种:COMB算法
redis自增
优点:简单,易实现,数字ID天然有序
缺点:依赖redis,考验redis性能
Twitter-Snowflake算法
优点:
- 不依赖数据库,性能高,单机有序
- 灵活,支持多节点部署
缺点:
- 无法做到全局递增
微信id生成算法
- 类似于批量生成多个id,性能好,避免每次访问库的压力
- 可能会有单点故障,服务重启ID不连续
百度 - UidGenerator
- 雪花算法变种
MongoDB — ObjectId