Advertisement

Реализация нагруженных и отказоустойчивых систем

Team Leader at ByndyuSoft
May. 22, 2017
Advertisement

More Related Content

Slideshows for you(20)

Similar to Реализация нагруженных и отказоустойчивых систем(20)

Advertisement

Recently uploaded(20)

Реализация нагруженных и отказоустойчивых систем

  1. Реализация нагруженных и отказоустойчивых систем Руслан Сафин технический директор Byndyusoft
  2. • Далеко не всегда зависит от количества пользователей • Нагружает определенный контур в системе Нагрузка
  3. • запросы внешней среды • ответы внешней среде • события по расписанию • изменение состояния в БД Потоки данных
  4. • Перезагрузка • полная • по времени • по ключу • по тэгам • Накатывание изменений Инвалидация кэша
  5. • Опрос необходимости перезагрузки кэша • Опрос выполнения задач • Передача данных между сервисами системы Антипаттерн: Shared Database
  6. • Сигналы о перегрузке кэша • Команды • Данные команды Шина сообщений
  7. • Подписка только на нужные события • Отправка изменений пачкой • Применение изменений пачкой Оптимизация накатывания изменений в кэшах
  8. • Последовательное чтение из БД • Последовательное чтение из БД и уже прогрузившихся нод • Единая отдельная точка прогрузки и раздачи кэша Оптимизация холодного старта кэшей
  9. • Единая точка записи в БД Событий слишком много — блокировки в БД
  10. • Отдельная БД на быструю запись нетранзакционных данных, кластер БД • Транзакционная БД для «важных» данных Оптимизация БД — разделение на SQL и NoSQL
  11. • Разделение обязанностей • Подписка на изменения в соответствии с состоянием кэша • Отслеживание исполнения (диспетчеризация) • Взаимодействие между собой нодов одного типа — эффект роя Оптимизация однотипных нодов
  12. • Дублирование всего • Балансировка нагрузки • Мониторинг с автопереключением (БД, балансировщики, сетевые интерфейсы и т.д.) • Разнесение дублирующих виртуалок на физически разные хосты • Авторазворачивание сервисов взамен упавших • Пессимистичная архитектура кода! Отказоустойчивость
  13. • Тестирование разворачивания бекапов • Тестирование отказа отдельных сервисов • Тестирование массовых отказов (хоста с несколькими виртуалками и др. сценарии) • Нагрузочное тестирование • Регрессионное! Тестирование отказоустойчивости
  14. • Уровни алертинга • debug / info / error / critical • в понедельник / с утра / посреди ночи • Автоматические меры • Dashboard • Функциональное тестирование • Тестирование мониторинга • Взаимодействие с кодом! • Сравнение параметров разных окружений Мониторинг
  15. КАК? • Итеративно, как можно проще • Тестовое окружение, максимально приближенное к боевому • Логирование • R&D
  16. • Нагрузка — потоки данных • Кэширование • своя структура данных в кэше • оптимальная инвалидация • холодный старт — не заDDоSить самим себя • Шина сообщений — среда общения сервисов • логика при подписке, а не при отправке • «внутривидовое» общение роя Еще разок
  17. • Запись в БД • Минимизация параллельной записи • разделение БД по назначениям • Автомасштабирование, отказоустойчивость и мониторинг • Тестирование • функциональности • отказоустойчивости • нагрузкоустойчивости • мониторинга Еще разок
  18. Dev DevOps QA
  19. Спасибо! Руслан Сафин iruslansafin@gmail.com @razonrus

Editor's Notes

  1. Главное – это потоки данных
  2. Важно понимать потоки данных в системе, исходя из них строить инфраструктуру и архитектуру кода
  3. Схема данных в БД и в кэшах разная! В кэшах ориентирована на конкретное приложение. Если идти дальше к микросервисам — у каждого сервиса своя БД
  4. Схема данных в БД и в кэшах разная! В кэшах ориентирована на конкретное приложение. Если идти дальше к микросервисам — у каждого сервиса своя БД
  5. Далее будет применение изменений (ивенты)
  6. Событий изменений данных очень много, система не успевает их применять
  7. Очевидные на первый взгляд правила, далеко не всегда соблюдаются на практике
  8. Очевидные на первый взгляд правила, далеко не всегда соблюдаются на практике
  9. Средство тестирования для больших проектов — например, количество обработанных статей
  10. Средство тестирования для больших проектов — например, количество обработанных статей
  11. Добавить про логирование, явные примеры, докер контаинер, виндовс = демон, нагрузка – скорость, примеры
Advertisement