No description
- Go 98.8%
- Dockerfile 1.2%
| .woodpecker | ||
| .dockerignore | ||
| .gitignore | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| main.go | ||
| main_test.go | ||
| README.md | ||
Unique ID Generator Service
REST API сервис для генерации уникальных идентификаторов различных типов.
Поддерживает UUID (v1-v7), Snowflake и ULID форматы.
Особенности
- Поддержка всех версий 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 |