Обеспечение низких задержек в высоконагруженной системе: разбор реального кейса
![](/media/photo/news/b5766.jpg )
Как разработчику обеспечить низкие задержки сложной системы при высоких нагрузках? Ведущий эксперт IT_ONE Максим Юнусов делится методологией для решения этой задачи, на примере реального проекта: модернизации Подсистемы обеспечения доступа к данным федеральной государственной информационной системы «Единая система межведомственного электронного взаимодействия» (ПОДД СМЭВ 4).
Постановка задачи
СМЭВ – это система, обеспечивающая электронное взаимодействие различных органов государственной власти. Предполагается, что в дальнейшем к ней могут быть подключены в качестве поставщиков и другие участники: коммерческие организации и частные лица. Доступ пользователей (потребителей данных) к информации поставщиков данных внутри системы осуществляется в формате Витрин данных – специализированных наборов структурированных данных. Соответственно, ПОДД СМЭВ – это компонент транспортной подсистемы СМЭВ, обеспечивающий доступ к данным, размещенным на Витринах данных. Предполагается, что ПОДД должна исполнять различные сложные запросы.
Итак, архитектурно ПОДД до трансформации – распределенная система из множества связанных между собой компонентов. Ее ядром является планировщик запросов на базе Apache Calcite, а основной протокол взаимодействия компонентов – журнал на базе Apache Pulsar, обеспечивающий гарантированность доставки. Механизм ограничения нагрузки (Rate Limiting) защищает систему от DoS-атак. Обработка запроса включает разбор запроса, производимый при каждом вызове. С целью обеспечить гарантированную доставку все сообщения сохраняются на диск.
До трансформации система поддерживала 1000 активных пользователей одновременно, время отклика 1 секунду (в 99% случаев) и мощность (пропускную способность) 5000 запросов в секунду. В соответствии с ТЗ заказчика, нам необходимо было получить следующие характеристики: 25000 активных пользователей, мощность 30000 запросов в секунду и время отклика не более 0,5 секунд на 99%.
Среди большого количества дополнительных ограничений необходимо отметить два: реализацию проекта на имеющемся «железе» и очень короткие сроки – один квартал. Таким образом, классическое решение задачи производительности – «затопить железом» – отпало само собой. Как и распространенная эволюционная модель: «попробовал, проверил, если не получилось – переделал». Надо было сразу спроектировать систему таким образом, чтобы уже на этапе планирования архитектура решения оказалась приемлемой по стоимости и обеспечивала ожидаемые показатели.
Этап 1: сдвигаем «бутылочное горлышко»
Предельные значения пропускной способности и времени отклика определяются максимальной потребностью в ресурсе – то есть временем, проведенном задачей на аппаратном ресурсе. Тот ресурс, который более всего замедляет систему, становится так называемым «бутылочным горлышком», задавая показатели производительности, выше которых подняться невозможно. Это основная проблема любой высоконагруженной системы, поэтому авторы учебников рекомендуют начинать ее оптимизацию именно с поиска «бутылочного горлышка». Оптимизация этого ресурса дает существенно больший выигрыш в производительности, чем оптимизация любого другого компонента системы.
Классический алгоритм действий для решения этой задачи – принцип центрирования. Находим «бутылочное горлышко» по симптомам: максимальная утилизация ресурса, максимальная потребность в ресурсе (время пребывания в ресурсе за один запрос), максимальная очередь к ресурсу. В нашем случае оно было очевидным: Apache Calcite. Обработчик запросов и тормозил систему больше всего. Для уменьшения потребности в этом ресурсе мы последовательно рассмотрели несколько тактик.
Полный текст на сайте Tproger
iTrend организует панельную дискуссию «Российские ИТ на глобальном рынке: стратегия выживших» на Международном технологическом Конгрессе-2024
2 сентября 2024Ключевые игроки ИТ-отрасли и представители профессиональных ассоциаций обсудят перспективы российского технологического бизнеса в контексте расширения БРИКС.
iTrend начал работу с DCLogic
21 августа 2024iTrend начал работу с DCLogic. Компания входит в топ-10 самых эффективных ИТ-компаний страны 2023 года, а также в топ-100 крупнейших интеграторов и разработчиков отечественного ПО по версии CNews.
iTrend выступит информационным партнером Международного технологического Конгресса-2024
20 августа 2024Мероприятие пройдет с 17 по 19 сентября 2024 года в Конгрессно-выставочном центре «Патриот» (Московская область).
iTrend проведет дискуссию о маркетинге и PR в ИТ на ИТ-форуме РУССОФТ
15 августа 20248-10 сентября 2024 года в Санкт-Петербурге состоится ИТ-форум РУССОФТ-2024, приуроченный к 25-летнему юбилею Ассоциации.
iTrend выступит инфопартнером бизнес-регаты IT Sailing Day 2024
12 августа 202415 августа в подмосковном поместье яхт-клуба Галс на берегу Пироговского водохранилища состоится бизнес-регата IT Sailing Day 2024. Мероприятие соберёт ведущих экспертов и лидеров ИТ-рынка для общения на важнейшие отраслевые темы и соревнования на скоростных яхтах.