目录
1. 需求
- 全局唯一,绝对不会出现重复的ID,且ID整体趋势递增。
- 高可用,服务完全基于分布式架构,即使MySQL宕机,也能容忍一段时间的数据库不可用。
- 高并发低延时,远程调用QPS可达5W+,TP99在1ms内。
- 接入简单,通过RPC或者HTTP调用即可接入。
2.方案设计
2.1 数据库设计
数据库中建立如下表,以seq_name为单位,每个seq有独立的id序列。
CREATE TABLE `sequence` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`seq_name` varchar(45) NOT NULL COMMENT '序列名称',
`seq_value` bigint(20) unsigned NOT NULL COMMENT '序列值',
`min_value` bigint(20) NOT NULL COMMENT '最小值',
`max_value` bigint(20) NOT NULL COMMENT '最大值',
`step` bigin