{"id":13840688,"url":"https://github.com/hwholiday/gid","last_synced_at":"2025-03-21T02:30:53.130Z","repository":{"id":57568879,"uuid":"270970093","full_name":"hwholiday/gid","owner":"hwholiday","description":"Golang 分布式ID生成系统，高性能、高可用、易扩展的id生成服务","archived":false,"fork":false,"pushed_at":"2021-03-02T09:19:10.000Z","size":95,"stargazers_count":64,"open_issues_count":1,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-17T19:52:09.308Z","etag":null,"topics":["distributed","golang","id"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hwholiday.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-06-09T10:18:04.000Z","updated_at":"2024-12-27T09:55:13.000Z","dependencies_parsed_at":"2022-08-23T17:01:19.672Z","dependency_job_id":null,"html_url":"https://github.com/hwholiday/gid","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwholiday%2Fgid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwholiday%2Fgid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwholiday%2Fgid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hwholiday%2Fgid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hwholiday","download_url":"https://codeload.github.com/hwholiday/gid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244725423,"owners_count":20499594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed","golang","id"],"created_at":"2024-08-04T17:00:52.139Z","updated_at":"2025-03-21T02:30:52.778Z","avatar_url":"https://github.com/hwholiday.png","language":"Go","funding_links":[],"categories":["Go","Go (531)"],"sub_categories":[],"readme":"# 简介\n# [推荐使用V2版本](https://github.com/hwholiday/gid/tree/gidV2)\n\ngid 是使用golang开发的生成分布式Id系统，基于数据库号段算法实现\n######  HTTP,GRPC 对外服务\n### 性能\n- id 从内存生成，如果(step)步长设置的足够大,qps可达到千万+\n### 可用性\n- id 分配依赖mysql ,当mysql不可用的,如果内存上还有的可以继续分配\n### 特性\n1. 全局唯一的int64型id  \n2. 分配ID只访问内存  \n3. 可无限横向扩展  \n4. 依赖mysql恢复服务迅速  \n ......\n### 安装\n- 初始化 mysql\n\n```base\ncreate database gid;\nuse gid;\ncreate table segments\n(\n    biz_tag     varchar(128) not null,\n    max_id      bigint       null,\n    step        int          null,\n    remark      varchar(200) null,\n    create_time bigint       null,\n    update_time bigint       null,\n    constraint segments_pk\n        primary key (biz_tag)\n) ENGINE = InnoDB\n  DEFAULT CHARSET = utf8mb4\n  COLLATE = utf8mb4_bin;\n\nINSERT INTO segments(`biz_tag`, `max_id`, `step`, `remark`, `create_time`, `update_time`)\nVALUES ('test', 0, 100000, 'test', 1591706686, 1591706686);\n```\n- 编译运行项目\n```base\n    git clone https://github.com/hwholiday/gid.git\n    cd gid/cmd\n    go build -o gidsrv\n   ./gidsrv -conf ./gid.toml\n```\n#### 压测\n```base\nBenchmarkService_GetId-4         2046296               583 ns/op \n```\n#### 健康检查\n- curl http://127.0.0.1:8080/ping\n\n#### 获取ID\n - test6 获取该 tag 类型的 id\n - curl http://127.0.0.1:8080/id/test6\n\n#### 获取雪花算法生成的ID\n - curl http://127.0.0.1:8080/rand/id \n \n#### 创建 tag\n- biz_tag tag 名称\n- max_id  从这里开始派发ID\n- step 步长\n- remark 备注\n- {\"biz_tag\":\"test6\",\"max_id\":0,\"step\":10,\"remark\":\"test6 tag\"}\n- curl -H \"Content-Type:application/json\" -X POST --data '{\"biz_tag\":\"test6\",\"max_id\":0,\"step\":10,\"remark\":\"test6 tag\"}' http://127.0.0.1:8080/tag\n#### 重点SQL\n```base\nBegin\nUPDATE table SET max_id=max_id+step WHERE biz_tag=xxx\nSELECT tag, max_id, step FROM table WHERE biz_tag=xxx\nCommit\n```\n\n\n### 文献\n[美团点评分布式ID生成系统](https://tech.meituan.com/2017/04/21/mt-leaf.html)\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhwholiday%2Fgid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhwholiday%2Fgid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhwholiday%2Fgid/lists"}