Successfully reported this slideshow.

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

2

Share

1 of 32
1 of 32

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

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

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

Editor's Notes

  • Главное – это потоки данных
  • Важно понимать потоки данных в системе, исходя из них строить инфраструктуру и архитектуру кода
  • Схема данных в БД и в кэшах разная! В кэшах ориентирована на конкретное приложение. Если идти дальше к микросервисам — у каждого сервиса своя БД
  • Схема данных в БД и в кэшах разная! В кэшах ориентирована на конкретное приложение. Если идти дальше к микросервисам — у каждого сервиса своя БД
  • Далее будет применение изменений (ивенты)
  • Событий изменений данных очень много, система не успевает их применять
  • Очевидные на первый взгляд правила, далеко не всегда соблюдаются на практике
  • Очевидные на первый взгляд правила, далеко не всегда соблюдаются на практике
  • Средство тестирования для больших проектов — например, количество обработанных статей
  • Средство тестирования для больших проектов — например, количество обработанных статей
  • Добавить про логирование, явные примеры, докер контаинер, виндовс = демон, нагрузка – скорость, примеры
  • ×