littlebot
Published on 2025-04-08 / 0 Visits
0

【源码】基于Golang的Snowflake ID生成系统

项目简介

本项目是基于Golang和gRPC框架构建的Snowflake ID生成系统。Snowflake算法可用于生成分布式唯一ID,本项目的服务端使用Golang实现该算法,借助gRPC框架达成客户端与服务端间的通信,适用于分布式系统和微服务架构中生成唯一ID。

项目的主要特性和功能

  1. 分布式唯一ID生成:运用Snowflake算法生成全局唯一的ID。
  2. 可配置性:能通过修改配置文件,灵活调整服务端口号、开始时间戳、机器号位长度、业务位长度、序列位长度和机器id等参数。
  3. 业务区分:设置不同的service_id可区分不同的业务类型。
  4. 多语言客户端支持:提供Golang和PHP客户端代码,便于不同语言开发者使用。

安装使用步骤

服务端

  1. 进入server目录,编译生成可执行文件: bash go build -o ../bin/id-server
  2. 将server目录下的app.conf拷贝到../bin目录: bash cp app.conf ../bin
  3. 修改app.conf文件,根据需求调整参数: json { "port":":7890", "epoch":1514736000000, "machine_id_bits":4, "service_id_bits":6, "step_bits":12, "machine_id":0 } 注意事项:
  4. machine_id_bits + service_id_bits + step_bits 必须等于22。
  5. 如果machine_id_bits为4,machine_id的取值范围是0 - 15(2的4次方),service_id也是同理。
  6. 不同启动实例的machine_id必须不同,service_id可以重复。
  7. 可以通过计算service_id,获取不同id的业务类型。
  8. 启动server。

客户端

暂未提供客户端具体使用步骤,可根据项目中提供的Golang和PHP客户端代码进行使用。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】