Golang 分布式ID生成系统,高性能、高可用、易扩展的id生

2020-06-10  本文已影响0人  hwholiday

简介

gid 是使用golang开发的生成分布式Id系统,基于数据库号段算法实现

性能

可用性

特性

  1. 全局唯一的int64型id
  2. 分配ID只访问内存
  3. 可无限横向扩展
  4. 依赖mysql恢复服务迅速
    ......

安装

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 

健康检查

获取ID

创建 tag

重点SQL

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

完整代码示例

文献

美团点评分布式ID生成系统

上一篇 下一篇

猜你喜欢

热点阅读