Go语言打造:超高性能分布式唯一ID生成工具

一、简介

二、安装部署

  • 提前准备好docker、docker-compose环境(这里不再赘述)
  • 新增docker-compose.yml文件,配置内容如下,需要设置正确的MySQL连接配置:
    version: "3"
    services:
      hello_id:
        image: ccr.ccs.tencentyun.com/luler/hello_id
        privileged: true
        restart: always
        environment:
          - ADMIN_NAME=admin      #管理员账号
          - ADMIN_PASSWORD=admin  #管理员登录密码
          - JWT_SECRET=FYDE7x5A   #页面访问token加密秘钥,自定义一个复杂的
          - DB_NAME=hello_id  #数据库名称,提前创建好
          - DB_HOST=10.10.11.195 #数据库ip地址
          - DB_PORT=3306
          - DB_USERNAME=root
          - DB_PASSWORD=root
        ports:
          - 2023:3000
        volumes:
          - ./runtime:/app/runtime
  • 在文件下执行启动命令
    docker-compose up -d

三、使用示例

1. 自带后台管理页面

  • 后台页面地址:http://127.0.0.1:2023 ,默认登录账号:admin,密码:admin

  • 登录之后,新增一个自定义ID

  • 在页面上测试生成一个ID,如下

2. 使用服务提供的API示例

2.1 使用API之前,需要在后台增加一个授权码,用于API调用授权
2.2 API使用示例
  • postman调用生成自定义ID示例
2.3 更多接口文档信息
2.3.1 生成雪花id(基于时间、机器id、随机数生成,有序,整数类型)

接口: /api/snowflake
方法:GET
请求参数:

字段是否必填类型描述
workerIdint机器ID,取值范围0-1023,默认0
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": {
    "ids": [
      "1711927875550052352"
    ],
    "type": "snowflake",
    "workerId": 0
  },
  "message": "创建成功"
}
2.3.2 生成sonyflake id(snowflake的改进版本,可用时间更长,有序,整数类型)

接口: /api/sonyflake
方法:GET
请求参数:

字段是否必填类型描述
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": {
    "ids": [
      "482279196769390593"
    ],
    "type": "sonyflake"
  },
  "message": "创建成功"
}
2.3.3 生成uuid V1 (根据时间、Mac地址等信息生成,有时间顺序)

接口: /api/uuid1

方法:GET

请求参数:

字段是否必填类型描述
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": {
    "ids": [
      "c9973b96-67db-11ee-89f2-00ff0c3e16f1"
    ],
    "type": "uuid1"
  },
  "message": "创建成功"
}
2.3.4 生成uuid V4 (完全随机生成,无序)

接口: /api/uuid4

方法:GET

请求参数:

字段是否必填类型描述
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": {
    "ids": [
      "f26cb76e-574b-4797-949e-85f449c77ee3"
    ],
    "type": "uuid4"
  },
  "message": "创建成功"
}
2.3.5 生成xid(基于时间戳、随机数生成,有序)

接口: /api/xid

方法:GET

请求参数:

字段是否必填类型描述
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": {
    "ids": [
      "ckj09svfe3qiv1150kr0"
    ],
    "type": "xid"
  },
  "message": "创建成功"
}
2.3.6 生成ksuid(基于时间戳、随机数生成,随机数比xid更大,唯一性更好,有序)

接口: /api/ksuid

方法:GET

请求参数:

字段是否必填类型描述
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": {
    "ids": [
      "2Wb9ZXX2OWPOpubXAKRLwQGn7cP"
    ],
    "type": "ksuid"
  },
  "message": "创建成功"
}
2.3.7 生成自定义ID(简单定制化,原子有序)

接口: /api/getId

方法:GET

请求参数:

字段是否必填类型描述
typestringID标识
lengthint获取ID数量,默认1,最大500
authKeystring授权码

返回示例:

{
  "code": 200,
  "data": [
    "20230930000000114.go"
  ],
  "message": "获取成功"
}

四、总结

  • 该工具可以提供高性能的ID生成服务,特别是自定义ID,配置灵活,使用简单,基本是纯内存生成唯一有序ID,可以集群部署无限扩展性能
  • 开发必备组件,在很多需要ID生成的业务系统中,都有用武之地
临时演示试用地址: 我这个咩应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值