Skip to content

egrishina/rate-limiter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

homework-3

Необходимо реализовать rate-limiter (алгоритм fixed window) для web api в .net core приложении.

Настройки:

  • количество одновременных запросов
  • период времени

задаются глобально для всего приложения, при этом есть возможность:

  • переопределить параметры на методах в контроллере;
  • задать индивидуальные настройки для потребителей.

Клиенты идентифицируются по IP. В случае превышения лимита, клиент должен получить HTTP ошибку 429.

*** Настройки лимитов желательно хранить не в памяти сервиса, а в отдельном внешнем хранилище (например, в БД). В случае внешнего хранения не забыть про то, что внешние системы бывают недоступны и это не повод для сервиса работать совсем без каких-либо лимитов.

Реализация задания со звёздочкой *** - возможность получить синий кристалл. Обязательное условие - приложение не нужно перезагружать, чтобы применились новые настройки лимитов. Cрок сдачи ДЗ - четверг, 16 июня, 16:00

Принцип работы

Алгоритм rate-limiting fixed window (реализован в RateLimitMiddleware).

В файле appsettings.json проекта Route256.RateLimiter.Demo указаны тестовые ограничения - общие и индивидуальные по IP.

Проект Route256.RateLimiter.Tests содержит Unit тесты для проверки ограничений, в том числе заданных в контроллере.

About

Route256 - Homework 3

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages