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