Розбір рішень · Senior · Запитання 13 з 14
Публічний API працює на 40 екземплярах, а кожен ключ може робити 100 запитів за хвилину. Малі сплески прийнятні, але ліміт має діяти між екземплярами. Де тримати лічильники?
- 1У пам'яті кожного з 40 екземплярів
- 2У рядку PostgreSQL, що оновлюється на кожен запит
- 3У спільному Redis, із token bucket
Показати відповідь
Правильна відповідь: У спільному Redis, із token bucket
Пояснення
Спільне сховище в пам'яті бачить усі екземпляри й дешево витримує таку частоту оновлень, а token bucket дозволяє короткі сплески. Лічильники на екземплярі підходять для грубого захисту від флуду, але ключ міг би досягти 40-кратного ліміту. Рядок бази підходить для малих квот, як місячний білінг, а оновлення на кожен запит робить із нього гаряче вузьке місце.