Analiza decyzji · Senior · Pytanie 13 z 14
Publiczne API działa na 40 instancjach, a każdy klucz może wysłać 100 żądań na minutę. Małe skoki są w porządku, ale limit musi działać między instancjami. Gdzie trzymać liczniki?
- 1W pamięci każdej z 40 instancji
- 2W wierszu PostgreSQL zmienianym przy każdym żądaniu
- 3We wspólnym Redisie, z token bucket
Pokaż odpowiedź
Poprawna odpowiedź: We wspólnym Redisie, z token bucket
Wyjaśnienie
Wspólny magazyn w pamięci widzi wszystkie instancje i tanio znosi taką częstość zmian, a token bucket pozwala na krótkie skoki. Liczniki na instancji pasują do zgrubnej ochrony przed zalewem, ale klucz mógłby osiągnąć 40-krotność limitu. Wiersz bazy pasuje do małych limitów, jak rozliczenia miesięczne, a zmiana przy każdym żądaniu robi z niego gorące wąskie gardło.