• Опрос необходимости перезагрузки кэша
• Опрос выполнения задач
• Передача данных между сервисами
системы
Антипаттерн: Shared Database
• Сигналы о перегрузке кэша
• Команды
• Данные команды
Шина сообщений
• Подписка только на нужные события
• Отправка изменений пачкой
• Применение изменений пачкой
Оптимизация накатывания
изменений в кэшах
• Последовательное чтение из БД
• Последовательное чтение из БД и уже
прогрузившихся нод
• Единая отдельная точка прогрузки и
раздачи кэша
Оптимизация холодного старта
кэшей
• Единая точка записи в БД
Событий слишком много —
блокировки в БД
• Отдельная БД на быструю запись
нетранзакционных данных, кластер БД
• Транзакционная БД для «важных» данных
Оптимизация БД — разделение на
SQL и NoSQL
• Разделение обязанностей
• Подписка на изменения в соответствии с
состоянием кэша
• Отслеживание исполнения
(диспетчеризация)
• Взаимодействие между собой нодов одного
типа — эффект роя
Оптимизация однотипных нодов
• Дублирование всего
• Балансировка нагрузки
• Мониторинг с автопереключением (БД,
балансировщики, сетевые интерфейсы и т.д.)
• Разнесение дублирующих виртуалок на
физически разные хосты
• Авторазворачивание сервисов взамен упавших
• Пессимистичная архитектура кода!
Отказоустойчивость
• Тестирование разворачивания бекапов
• Тестирование отказа отдельных сервисов
• Тестирование массовых отказов (хоста с
несколькими виртуалками и др. сценарии)
• Нагрузочное тестирование
• Регрессионное!
Тестирование отказоустойчивости
• Уровни алертинга
• debug / info / error / critical
• в понедельник / с утра / посреди ночи
• Автоматические меры
• Dashboard
• Функциональное тестирование
• Тестирование мониторинга
• Взаимодействие с кодом!
• Сравнение параметров разных окружений
Мониторинг
КАК?
• Итеративно, как можно проще
• Тестовое окружение, максимально
приближенное к боевому
• Логирование
• R&D
• Нагрузка — потоки данных
• Кэширование
• своя структура данных в кэше
• оптимальная инвалидация
• холодный старт — не заDDоSить самим себя
• Шина сообщений — среда общения сервисов
• логика при подписке, а не при отправке
• «внутривидовое» общение роя
Еще разок
• Запись в БД
• Минимизация параллельной записи
• разделение БД по назначениям
• Автомасштабирование, отказоустойчивость и
мониторинг
• Тестирование
• функциональности
• отказоустойчивости
• нагрузкоустойчивости
• мониторинга
Еще разок