Коллеги, а есть ли какое-либо готовое решение, чтобы в Эрл организовать ограничения per second, per 5 minutes, per day? Или направьте на путь истинный - где можно подсмотреть?
я когда-то такое делал:
https://github.com/stolen/eraterНо документацию так и не собрался написать.
Отличия от throttle, который выше:
* поддержка burst (т.е. можно выдать авансом 10 хитов при RPS 5)
* Опция «дождаться, когда будет свободно» — если клиент готов подождать сейчас, а не долбиться до посинения
* Логика сосредоточена в gen_server — это позволяет не огребать локи на таблицах при больших RPS
Основной «драйвер» в файле
https://github.com/stolen/erater/blob/master/src/erater_counter.erlГде-то рядом сделано шардирование по кластеру.
В соседнем репозитории HTTP-интерфейс к счётчикам