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

Contenu connexe

Tendances

сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
kuchinskaya
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Ontico
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
Ontico
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Ontico
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Ontico
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Fuenteovejuna
 

Tendances (20)

SignalR
SignalRSignalR
SignalR
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
 
2013-07-06 02 Дмитрий Голушко. Cassandra
2013-07-06 02 Дмитрий Голушко. Cassandra2013-07-06 02 Дмитрий Голушко. Cassandra
2013-07-06 02 Дмитрий Голушко. Cassandra
 
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
Преждевременная оптимизация архитектуры / Евгений Потапов, Антон Баранов (ITS...
 
Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...Как не положить тысячи серверов с помощью системы централизованного управлени...
Как не положить тысячи серверов с помощью системы централизованного управлени...
 
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
Как devops исчерпывает себя, и что будет дальше / Кирилл Вечера (Jetware)
 
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
Стратегия и тактика улучшения производительности BSS систем оператора мобильн...
 
Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
 
Высокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.comВысокая доступность web приложений. SHALB.com
Высокая доступность web приложений. SHALB.com
 
SuperNovo: примеры размещения 1С
SuperNovo: примеры размещения 1СSuperNovo: примеры размещения 1С
SuperNovo: примеры размещения 1С
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
TeamPass - управление разграничением доступа к сервисным паролям в команде | ...
 
Sql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migrationSql Server: Database Mirroring -> Availability group migration
Sql Server: Database Mirroring -> Availability group migration
 
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
Высокопроизводительная и отказоустойчивая архитектура фронтальных систем / Ма...
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
Использование 0MQ для построения low latency распределёных систем, Андрей Охл...
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
 
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
Автоматизация нагрузочного тестирования в связке JMeter + TeamСity + Grafana ...
 
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
SECON'2016. Панин Сергей, Лебедев Андрей, Храмушин Дмитрий, IT-инфраструктура...
 
Perl и SPDY
Perl и SPDYPerl и SPDY
Perl и SPDY
 

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

Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
Alex Chistyakov
 
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Dmitry Lazarenko
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
Andrey Korshikov
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Tanya Denisyuk
 
Эффективное управление ПО под *nix
Эффективное управление ПО под *nixЭффективное управление ПО под *nix
Эффективное управление ПО под *nix
Andrew Pantyukhin
 

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

Практический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQLПрактический опыт использования некоторых современных решений репликации MySQL
Практический опыт использования некоторых современных решений репликации MySQL
 
HighLoad systems: tips & tricks
HighLoad systems: tips & tricksHighLoad systems: tips & tricks
HighLoad systems: tips & tricks
 
Windows Azure Internals
Windows Azure InternalsWindows Azure Internals
Windows Azure Internals
 
Миграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows AzureМиграция существующих приложений в Windows Azure
Миграция существующих приложений в Windows Azure
 
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаковIBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
IBM Cloudant и Apache CouchDB: NoSQL базы данных эпохи облаков
 
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
Высокая доступность приложений в гибридном облаке на базе Jelastic и Azure Tr...
 
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
Андрей Зайчиков "Архитектура распределенных кластеров NoSQL на AWS"
 
Отказоустойчивые решения SQL
Отказоустойчивые решения SQLОтказоустойчивые решения SQL
Отказоустойчивые решения SQL
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
Дмитрий Лазаренко-«Живая миграция и отказоустойчивость контейнеров в гибридно...
 
Трансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTestТрансформация управления данными в средах DevTest
Трансформация управления данными в средах DevTest
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015Rsnx tsvetkov che btrix conf 2015
Rsnx tsvetkov che btrix conf 2015
 
Windows azure общий обзор
Windows azure общий обзорWindows azure общий обзор
Windows azure общий обзор
 
Delphix Dynamic Data Platform, как попробовать и правильно оценить решение
Delphix Dynamic Data Platform, как попробовать и правильно оценить решениеDelphix Dynamic Data Platform, как попробовать и правильно оценить решение
Delphix Dynamic Data Platform, как попробовать и правильно оценить решение
 
Загрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитикиЗагрузка больших объемов данных для бизнес-аналитики
Загрузка больших объемов данных для бизнес-аналитики
 
Эффективное управление ПО под *nix
Эффективное управление ПО под *nixЭффективное управление ПО под *nix
Эффективное управление ПО под *nix
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Sivko
SivkoSivko
Sivko
 
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructurelinkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
linkmeup-V069 (2018-11) Azure. Cloud network Infrustructure
 

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

  • 1. Реализация нагруженных и отказоустойчивых систем Руслан Сафин технический директор Byndyusoft
  • 2. • Далеко не всегда зависит от количества пользователей • Нагружает определенный контур в системе Нагрузка
  • 3. • запросы внешней среды • ответы внешней среде • события по расписанию • изменение состояния в БД Потоки данных
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12. • Перезагрузка • полная • по времени • по ключу • по тэгам • Накатывание изменений Инвалидация кэша
  • 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. • Запись в БД • Минимизация параллельной записи • разделение БД по назначениям • Автомасштабирование, отказоустойчивость и мониторинг • Тестирование • функциональности • отказоустойчивости • нагрузкоустойчивости • мониторинга Еще разок

Notes de l'éditeur

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