creativeworm
@creativeworm

Определенное RDS (запросы в секунду) в сервере очередей?

На данный момент есть сервер Gearman, несколько серверов по 20 воркеров на каждом.
Воркеры делают запросы через curl по определенному адресу (стороннее внешнее API).

Вопроса два:
Как ограничить количество запросов в секунду всеми воркерами? Чтобы не отправлялось больше 100 запросов в секунду со всех воркеров по определенному адресу.

Как ограничить количество запросов в секунду воркерами на определенном сервере? Если каждый сервер имеет один IP, то ограничить отправку запросов с одного IP к стороннему API.
  • Вопрос задан
  • 298 просмотров
Решения вопроса 1
konst20
@konst20
Программист, преподаватель, немного электронщик
Средствами Gearman этого сделать, разумеется, нельзя - это явно внешняя по отношению к gearman задача.
Главная идея - запустить весь поток через какой-то регулятор.
Как бы я сделал.
1) есть мастер-воркер, который добавляет задачи на сервер очередей на запрос к внешнему АПИ
2) клиенты кидают в очередь не задачи на запрос к внешнему АПИ, а задачи на запрос к этому самому мастер-воркеру
3) мастер-воркер, получив задачу, смотрит, не превышен ли поток, и, если превышен, ждет, не превышен - кидает в очередь задачу на запрос к внешнему АПИ
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы