title: 分布式ID问题及解决方案
comments: false
toc: true
categories:
- 分布式方案
tags: - 分布式ID
- 雪花算法
date: 2020-12-30 21:28:30
为什么需要分布式ID?
传统的ID生成方式一般使用数据库自增,这样有序且长度可控,但是在分布式环境里,往往因库表数据过大而需要分库、分表,这样继续使用自增主键就会出现主键冲突问题。一般需要一个单独的机制或服务来生成一套全局的ID,这样的ID也叫分布式ID。
分布式ID目前有哪些常用做法?分别有什么优缺点?
-
UUID;
优点:生成方式简单,无需第三方服务,可移植性好。
缺点:长度较长,无序ID,插入数据库用作主键性能不佳。
-
数据库自增主键(单机/集群),其他服务每次查询此最新值。
优点:获取简单,有序ID;下次生成ID可预期。
缺点:需要依赖数据库,可移植性差。集群环境下需要给每台设置步长,维护时可能需要停机。
-
号段模式,每次数据库保存起止ID位置,客户端请求时拿到范围后本地维护,用尽后再拿新的号段
优点:有序ID;性能较好;不强依赖数据库,自增下放至本机可自行维持一定时间;
缺点&#