Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hexarchy/flood-control
flood control task for vk
https://github.com/hexarchy/flood-control
flood-control go vk
Last synced: 15 days ago
JSON representation
flood control task for vk
- Host: GitHub
- URL: https://github.com/hexarchy/flood-control
- Owner: HexArchy
- Created: 2024-03-23T19:17:26.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2024-03-23T20:08:31.000Z (8 months ago)
- Last Synced: 2024-10-10T13:22:53.089Z (about 1 month ago)
- Topics: flood-control, go, vk
- Language: Go
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Управление Флудом (Flood Control)
Этот проект представляет собой простой пример реализации механизма управления флудом (Flood Control) с использованием Redis в качестве хранилища данных.
## Использование
1. Установите зависимости проекта:
```bash
go mod tidy
```
2. Запускаем Redis:```bash
redis-server
```3. Запустите приложение:
```bash
go run app/main.go -config=
```## Конфигурация
Конфигурационный файл `config/config_local.yaml` содержит параметры подключения к Redis и настройки управления. Пример конфигурации:
```yaml
redis:
address: "localhost:6379"
password: ""
db: 0
floodControl:
requestLimit: 40
periodSeconds: 60
```## Почему Redis?
Redis был выбран в качестве хранилища данных для управления флудом по следующим причинам:
- **Высокая производительность**: Redis обеспечивает быстрый доступ к данным благодаря хранению данных в памяти и использованию оптимизированных структур данных.
- **Поддержка структур данных для контроля флуда**: В данном проекте используется структура данных Sorted Set для хранения временных меток запросов пользователя, что обеспечивает эффективную проверку количества запросов за определенный период времени.
- **Масштабируемость и отказоустойчивость**: Redis поддерживает кластеризацию для масштабирования и обеспечения отказоустойчивости, что делает его подходящим выбором для высоконагруженных приложений.
## Примеры тестов
Проект включает в себя как unit-тесты, так и интеграционные тесты для проверки функциональности управления флудом. Вы можете запустить тесты с помощью команды:
```bash
go test ./...
```## Про проект
Изначально хотел написать что-то на redis, тут выпала такая возможность, ведь транзакции это круто. Прочитав про пакеты связанные с редисом, нашел и Sorted Set. Спасибо за таск, освоил что-то новое.
P.S. Не судите строго 0-0