当前位置: 首页 > ops >正文

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

一、简介

  • 这是一个超高性能唯一ID生成工具,支持docker一键部署,提供API接入功能
  • 支持高性能生成Snowflake ID、Sonyflake ID、UUID v1、UUID v4、XID、KSUID以及自定义ID的服务
  • 可以用来生成订单编号、学号、高标准唯一标识、有序ID等等
  • 开源地址参考:GitHub - luler/hello_id: 高性能生成snowflake id、sonyflake id、uuid v1、uuid v4、xid、ksuid以及自定义ID的服务

二、安装部署

  • 提前准备好docker、docker-compose环境(这里不再赘述)
  • 新增docker-compose.yml文件,配置内容如下,需要设置正确的MySQL连接配置:
    version: "3"
    services:hello_id:image: ccr.ccs.tencentyun.com/luler/hello_idprivileged: truerestart: alwaysenvironment:- 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=rootports:- 2023:3000volumes:- ./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生成的业务系统中,都有用武之地
临时演示试用地址: 我这个咩应用
http://www.xdnf.cn/news/7895.html

相关文章:

  • 关于FPGA 和 ASIC设计选择方向的讨论
  • VoiceFixer语音修复介绍与使用
  • 软件工程(六):一致性哈希算法
  • 【Redis】AOF日志的三种写回机制
  • 一文详解并查集:从基础原理到高级应用
  • MAYA 转换为 STP:深度技术解析与全流程实践指南
  • OpenCV CUDA模块特征检测与描述------创建一个 盒式滤波器(Box Filter)函数createBoxFilter()
  • GPU P-State 模式说明
  • MCP入门介绍
  • 【VS2017】cpp 文件字符编码方式转换
  • 进阶知识:理解函数装饰器@wraps()的返回值逻辑 和 闭包的深度解析
  • 力扣热题100, 力扣.167两数之和II 力扣80.删除有序数组中的重复项力扣99.恢复二叉搜索树力扣.110平衡二叉树
  • 【项目管理】项目管理中的”三边、六拍、四没和只谈“
  • 软件是什么?
  • Sentinel原理与SpringBoot整合实战
  • 开发经典的瀑布流
  • c++11特性——可变参数模板及emplace系列接口
  • 【ffmpeg】SPS与PPS的概念
  • BurpSuite Montoya API 详解
  • 基于stm32的空气质量监测系统
  • 2025年二级等保实施全攻略:传统架构与云等保方案深度解析
  • 乘法逆元:费马小定理(利用快速乘法幂)(JAVA)
  • GitHub 趋势日报 (2025年05月20日)
  • 洛谷B3840 [GESP202306 二级] 找素数
  • MySQL--day5--多表查询
  • 第22天-Python ttkbootstrap 界面美化指南
  • 漏洞扫描企业如何助力企业预防安全风险应对网络攻击?
  • GUI实验
  • vue3 threejs 物体发光描边
  • Python人工智能算法 模拟退火算法:原理、实现与应用