Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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