Golang 分布式ID生成系统,高性能、高可用、易扩展的id生成服务
gid 是使用golang开发的生成分布式Id系统,基于数据库号段算法实现
create database gid;
use gid;
create table segments
(
biz_tag varchar(128) not null,
max_id bigint null,
step int null,
remark varchar(200) null,
create_time bigint null,
update_time bigint null,
constraint segments_pk
primary key (biz_tag)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_bin;
INSERT INTO segments(`biz_tag`, `max_id`, `step`, `remark`, `create_time`, `update_time`)
VALUES ('test', 0, 100000, 'test', 1591706686, 1591706686);
git clone https://github.com/hwholiday/gid.git
cd gid/cmd
go build -o gidsrv
./gidsrv -conf ./gid.toml
BenchmarkService_GetId-4 2046296 583 ns/op
Begin
UPDATE table SET max_id=max_id+step WHERE biz_tag=xxx
SELECT tag, max_id, step FROM table WHERE biz_tag=xxx
Commit