克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Tiny ID

一个轻量、灵活、高性能的分布式 ID 生成器系统

SpringBoot star fork

简介

Tiny ID 是一个基于SpringBoot+MySQL的轻量级、灵活、高性能的分布式ID生成器系统。

  • Java语言开发,天然具有跨平台的优点。
  • 架构简单,仅依赖于Java和MySQL数据库。
  • 支持集群环境分布式部署,可部署多个节点。
  • 同时支持 数据库号段snowflake雪花算法 两种生成模式,可自由根据需求进行选择。
  • snowflake雪花算法 模式,支持服务启动时自动分配数据中心ID和机器ID,无需手动配置。
  • 通过http方式访问生成id,简洁灵活,方便业务系统接入。
  • 提供控制台管理功能,支持数据监控、雪花ID节点查看,流水号管理等功能,界面操作友好。

性能

测试环境:windows 4核心、16G内存

  1. 数据库号段模式 在将步长(step)设置成100时,使用 Apache JMeter (5.5) 进行压测,吞吐量可达 12000/sec 以上。原理上号段步长(step)设置的越长,则生成性能越高。

  2. snowflake雪花算法模式 使用 Apache JMeter (5.5) 进行压测,吞吐量可达 15000/sec 以上。

调用方式

  1. 数据库号段模式调用
请求地址 请求方式 输入参数 返回结果
/api/segment/get/{idCode} GET 或 POST idCode为流水号唯一标识 返回示例:{"code": 0, "msg": "获取成功!","data": "QB_2024_000000001"}
/api/segment/batch/{idCode}/{batchSize} GET 或 POST idCode为流水号唯一标识,batchSize为批量大小 返回示例:{"code": 0, "msg": "获取成功!","data": ["QB_2024_000000001", "QB_2024_000000002"]}
  1. snowflake雪花算法模式调用
请求地址 请求方式 输入参数 返回结果
/api/snowflake/get GET 或 POST 返回示例:{"code": 0, "msg": "获取成功!","data": 1763100524001140738}
/api/snowflake/batch/{batchSize} GET 或 POST batchSize为批量大小 返回示例:{"code": 0, "msg": "获取成功!","data": [1763100524001140738, 1763453297234317313]}

主要技术选型

1、后端:

  • Java 17
  • SpringBoot 3.1.12

2、前端:

  • Layui 2.8.11
  • jQuery 2.1.4

运行环境

  • Jdk17
  • MySQL5.6+

运行启动教程

  1. 新建MySQL数据库并导入resources/init文件夹下的数据库初始化脚本
  2. 修改配置文件中application.yml中数据库连接信息
  3. 运行启动类TinyIdApplication,即可正常启动项目
  4. 管理后台登录地址:http://localhost:9999 初始账户密码 admin / 123456

控制台功能

1、仪表盘

  • 查看当前系统内雪花ID节点数量和流水号数量
  • 查看流水号访问量Top25

2、雪花ID节点

  • 查看当前系统内所有雪花ID节点信息列表,包括节点IP、节点端口、数据中心ID、机器ID、创建时间、刷新时间等信息
  • 支持根据节点IP模糊查询

3、流水号管理

  • 查看当前系统内所有流水号信息列表
  • 在线新增流水号、修改流水号、删除流水号、流水号包括以下属性:
    • 流水号标识编码:流水号唯一标识编码,只能由英文、数字和下划线组成,通过http调用时需传递此参数
    • 流水号名称:流水号的名称
    • 流水号步长:号段的步长,即每次预生成的ID数量
    • 流水号长度:流水号的总字符个数
    • 流水号前缀:拼接在流水号前的内容,如 QQ_00000001,QQ_00000002
    • 流水号后缀:拼接在流水号后的内容,如 00000001_QQ,00000002_QQ
      • 额外说明:
        • 前缀和后缀支持时间格式替换,如下所示(示例,前缀为 ID_[yyyy]_,则生成的ID会是ID_2024_00000001这种形式的)
        • 假设当前时间为2024年2月25日3时11分23秒,如果前缀或后缀包含下列字符串
        • [yyyy]:生成的流水号将该字符串替换为2024
        • [yy]:生成的流水号将该字符串替换为24
        • [MM]:生成的流水号将该字符串替换为02
        • [dd]:生成的流水号将该字符串替换为25
        • [HH]:生成的流水号将该字符串替换为03
        • [mm]:生成的流水号将该字符串替换为11
        • [ss]:生成的流水号将该字符串替换为23

控制台功能界面展示

登录 登录

首页 首页

仪表盘 仪表盘

雪花ID节点 雪花ID节点

流水号管理 流水号管理

流水号管理-新增 流水号管理-新增

流水号管理-编辑 流水号管理-编辑

MIT License Copyright (c) 2024 llllllxy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

一个轻量、灵活、高性能的分布式 ID 生成器系统 展开 收起
JavaScript 等 4 种语言
MIT
取消

发行版 (1)

全部

贡献者

全部

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化