Мащабирахме хоризонтално до 50 инстанции. Тесното място просто се премести.

Фаза 1: Тесно място в приложението

  • 5 app сървъра, 100% CPU
  • Решение: Мащабиране до 20 сървъра
  • Резултат: App CPU 30%

Фаза 2: Тесно място в базата данни

  • База данни: 100% CPU, 5000 връзки
  • Решение: Connection pooling, реплики за четене
  • Резултат: Database CPU 60%

Фаза 3: Тесно място в балансьора на натоварване

  • Единичен ALB достигнал лимит на пакети
  • Решение: Множество ALB с DNS round-robin
  • Резултат: Трафикът разпределен

Фаза 4: Тесно място в опашката за съобщения

  • RabbitMQ единичен възел наситен
  • Решение: Клъстерирана опашка, разделени топици
  • Резултат: Съобщенията текат

Урокът:

Законът на Amdahl: Ускорението е ограничено от последователните части
                                    Пропускателна способност на системата = min(
                                    app_capacity,
                                    db_capacity,
                                    network_capacity,
                                    queue_capacity,
                                    external_api_capacity
                                    )

Какво научихме:

  • Идентифицирайте тесното място ПРЕДИ да мащабирате
  • Load test на целия път
  • Мониторинг на всички компоненти, не само на apps
  • Понякога вертикалното мащабиране е по-евтино

Урок: Мащабирането на един компонент премества тесното място към следващия. Планирайте за капацитет от край до край.


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