Експлозия на сложността от 1K до 10K RPS
Мащабирането от 1K до 10K заявки в секунда не беше 10 пъти по-трудно. Беше 100 пъти по-трудно.
Какво работеше при 1K RPS:
- Синхронни извиквания между услуги
- JOIN заявки в базата данни за сложни заявки
- Логове към CloudWatch без семплиране
- Просто round-robin балансиране на натоварването
Какво се счупи при 10K RPS:
- Достигнати лимити за връзки към базата данни
- Синхронните извиквания създадоха каскадни таймаути
- Разходите за CloudWatch експлодираха (10x логове = 10x разходи)
- Горещи ключове в кеширащия слой
- Изчерпване на мрежовите сокети
Нужни нови модели:
- Управляван от събития вместо заявка-отговор
- Реплики за четене и пулинг на връзките
- Семплиране на логовете (1% на debug ниво)
- Ограничаване на заявки на крайната точка
- Последователно хеширане за разпределение на кеша
Прозрението:
При всеки порядък на нарастване решавате различни проблеми. Архитектурата, която работи за 1K, няма да работи за 10K. Това, което работи за 10K, няма да работи за 100K.
Урок: Тестването за мащабиране не е опционално. Денят с 10 пъти повече трафик ще открие всяка слабост.