No description
  • Go 98.8%
  • Dockerfile 1.2%
Find a file
2025-05-24 13:10:33 +03:00
.woodpecker Fix CI/CD 2025-05-24 13:10:33 +03:00
.dockerignore first commit 2025-05-24 11:30:30 +03:00
.gitignore first commit 2025-05-24 11:30:30 +03:00
Dockerfile Fix CI/CD 2025-05-24 12:58:17 +03:00
go.mod first commit 2025-05-24 11:30:30 +03:00
go.sum first commit 2025-05-24 11:30:30 +03:00
main.go Fix CI/CD 2025-05-24 11:50:51 +03:00
main_test.go first commit 2025-05-24 11:30:30 +03:00
README.md first commit 2025-05-24 11:30:30 +03:00

Unique ID Generator Service

REST API сервис для генерации уникальных идентификаторов различных типов.
Поддерживает UUID (v1-v7), Snowflake и ULID форматы.

Go Report Card License: MIT

Особенности

  • Поддержка всех версий UUID (v1-v7)
  • Генерация Snowflake ID (Twitter-совместимый)
  • Генерация ULID (сортировка по времени)
  • Ограничение скорости запросов (rate limiting)
  • Валидация параметров
  • Высокая производительность (10k+ RPS)
  • Минимальные зависимости
  • Статический бинарник <15MB

Технологии

  • Golang 1.24+
  • Google UUID (реализация UUID)
  • Snowflake (распределенные ID)
  • ULID (сортируемые идентификаторы)

Установка

Требования

  • Go 1.20+
  • Git

Сборка из исходников

git clone https://git.ymnuktech.ru/ymnuk/uid-generator
cd uid-generator
go build -o uid-generator

Использование

Запуск сервиса

./uid-generator

Сервис будет доступен на http://localhost:8080

API Endpoints

API Endpoints

UUID

Версия Endpoint Параметры
v1 GET /generate/uuid/v1 ?count=N
v3 GET /generate/uuid/v3 ?count=N&name=S
v4 GET /generate/uuid/v4 ?count=N
v5 GET /generate/uuid/v5 ?count=N&name=S
v6 GET /generate/uuid/v6 ?count=N
v7 GET /generate/uuid/v7 ?count=N

Snowflake

GET /generate/snowflake?count=N

ULID

GET /generate/ulid?count=N

Параметры:

  • count (обязательный): Количество ID (1-1000)
  • name (только для v3/v5): Исходная строка для хеширования

Примеры

Генерация 3 UUIDv4

curl http://localhost:8080/generate/uuid/v4?count=3

Ответ:

[
  "a1b2c3d4-e5f6-7g8h-9i0j-k1l2m3n4o5p6",
  "b2c3d4e5-f6g7-8h9i-0j1k-l2m3n4o5p6q7",
  "c3d4e5f6-g7h8-9i0j-1k2l-m3n4o5p6q7r8"
]

Генерация 5 Snowflake ID

curl http://localhost:8080/generate/snowflake?count=5

Ответ:

[1626284800000000000, 1626284800000000001, 1626284800000000002, ...]

Тестирование

Запуск тестов

go test -v -cover ./...

Покрытие кода

go test -coverprofile=coverage.out
go tool cover -html=coverage.out

Конфигурация

Создайте файл .env для настроек:

PORT=8080
MAX_IDS=2000

Переменные могут быть также заданы через окружение:

export PORT=3000
export MAX_IDS=500

Запуск с кастомными настройками

MAX_IDS=500 PORT=3000 ./uid-generator

Лицензия

MIT License. Подробности в файле LICENSE.


Автор: Ваше Имя

Дополнительная документация

Форматы ID

Тип Пример Длина Особенности
UUIDv1 d94a3d80-1c3f-11ee-be56-0242ac120002 36 На основе времени и MAC-адреса
UUIDv4 550e8400-e29b-41d4-a716-446655440000 36 Полностью случайный
Snowflake 1626284800000000000 19 64-битный числовой формат
ULID 01H5VYX6Z4R9P7K2W3GABCDEF0 26 Сортировка по времени создания

Ошибки API

Код Сообщение
400 Invalid count parameter (1-1000)
500 Internal server error