-
Notifications
You must be signed in to change notification settings - Fork 19
整体设计
钟勋 edited this page Apr 3, 2020
·
11 revisions
idcenter是一款高效分布式id生成系统,分为服务端和客户端,服务端和客户端是通过http请求进行交互。
服务端存储管理不同业务线需要的id,对id进行统一管理。接收客户端获取id的请求,并返回一批id给客户端。
id分为两部分:id所在的时间周期+id值。id具有周期概念(每个小时(天、月、年)算一个周期或无周期),当时间更替到下个周期时,id值自动重置到0(如果周期类型为“无周期”,则id值不会被重置)。每个id(id所在的时间周期+id值)是唯一的。
下面是主要表的结构:
id提供者主要表结构:
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| iderId | varchar(128) | YES | UNI | NULL | |
| iderName | varchar(255) | YES | | NULL | |
| periodType | varchar(64) | YES | | NULL | |
| maxId | bigint(20) | YES | | NULL | |
| maxAmount | int(11) | YES | | NULL | |
| factor | int(11) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
重要字段说明
iderId:id编码,每种类型id的唯一标识。
iderName:id提供者的名称
periodType:周期类型(小时、天、月、年、无)
maxId:id在一个周期内允许的最大值(不包含),null表示不限制。
maxAmount:客户端一次请求允许获取的最多id数量(包含),null表示不限制。
factor:该id提供者具有的生产者数量。
id生产者主要表结构:
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| iderId | varchar(128) | YES | MUL | NULL | |
| index | int(11) | YES | | NULL | |
| currentPeriod | datetime | YES | | NULL | |
| currentId | bigint(20) | YES | | NULL | |
+---------------+--------------+------+-----+---------+----------------+
重要字段说明
iderId:id编码,标识本生产者属于哪个id提供者
index:生产者的序号,iderId+index标识一个唯一的生产者
currentPeriod:当前周期,标识本生产者当前生产到了哪个周期。如果周期类型为无,则当前周期为null
currentId:当前id,标识本生产者在当前周期下生产到了哪个id