Построение ограничения скорости для исходящих вызовов SES - PullRequest
0 голосов
/ 15 января 2020

У меня есть служба (в Golang), которая используется для отправки электронных писем по телефону SES. Теперь у SES есть предел, скажем, 100 req / s. Эта услуга может быть засыпана запросами от различных служб. Я хочу отправить все электронные письма, не опуская ни одного. Для этого я хочу ограничить скорость отправки запросов в SES менее, чем, скажем, 80 req / s, и сохранить буфер в 20 для приоритетных писем, таких как OTP. Это распределенная система.

Я планирую добиться этого, имея две очереди: приоритетную и обычную. Pu sh все исходящие запросы в эти две очереди, в зависимости от срочности. Потребитель этих очередей будет хранить количество запросов, отправленных за последнюю минуту в Redis (так как это распределенная система). По этому я буду отслеживать требования. Если вы достигли отметки 80 req / s, будет установлена ​​экспоненциальная задержка для возобновления потребления.

Есть ли лучший дизайн для достижения этого?

...