Мащабирането от 1K до 10K заявки в секунда не беше 10 пъти по-трудно. Беше 100 пъти по-трудно.

Какво работеше при 1K RPS:

  • Синхронни извиквания между услуги
  • JOIN заявки в базата данни за сложни заявки
  • Логове към CloudWatch без семплиране
  • Просто round-robin балансиране на натоварването

Какво се счупи при 10K RPS:

  • Достигнати лимити за връзки към базата данни
  • Синхронните извиквания създадоха каскадни таймаути
  • Разходите за CloudWatch експлодираха (10x логове = 10x разходи)
  • Горещи ключове в кеширащия слой
  • Изчерпване на мрежовите сокети

Нужни нови модели:

  • Управляван от събития вместо заявка-отговор
  • Реплики за четене и пулинг на връзките
  • Семплиране на логовете (1% на debug ниво)
  • Ограничаване на заявки на крайната точка
  • Последователно хеширане за разпределение на кеша

Прозрението:

При всеки порядък на нарастване решавате различни проблеми. Архитектурата, която работи за 1K, няма да работи за 10K. Това, което работи за 10K, няма да работи за 100K.

Урок: Тестването за мащабиране не е опционално. Денят с 10 пъти повече трафик ще открие всяка слабост.


← Назад към Научени Уроци