УДК 004.042

Выявление требований и критериев для сравнения паттернов реализаций высоконагруженного приложения обработки потока данных в режиме реального времени

Арбатов Денис Кириллович – магистрант Московского технического университета связи и информатики

Аннотация: В статье выявлены и разобраны основные требования и критерии необходимые для сравнения паттернов реализаций высоконагруженного приложения обработки потока данных в режиме реального времени. В соответствии с данными требованиями и критериями возможно провести анализ любого высоконагруженного приложения обработки потока данных режиме реального времени, а потом произвести оптимальный и обоснованный выбор в пользу той или иной потоковой платформы. Задачами исследования паттернов реализаций потоковой системы будут выступать выявленные требования, при решении данных задач исследования рекомендовано использовать выявленные критерии.     

Ключевые слова: поток данных, высоконагруженные приложения, основные требования, критерии, потоковая обработка, пропускная способность, высокая производительность, задержка, доставка сообщений, надежность, безопасность, стоимость.

При сравнении паттернов реализаций высоконагруженного приложения обработки потока данных в режиме реального времени возможно выявить следующие основные требования.

Требование высокой производительности – реализуется с помощью оптимизации и применения профилирующих инструментов, которые определяют этап жизненного цикла системы потоковой обработки данных в режиме реального времени, на котором имеются потери по времени и соответствующее повышение затрат вычислительных ресурсов. Далее анализируется полученная информация и применяются мероприятия, которые могут обеспечить оптимизацию производительности, данные мероприятия обычно включают оптимизацию программного кода и оптимизацию архитектуры. Оптимизация производительности является главным аспектом для высоконагруженных приложений обработки потока данных в режиме реального времени, так как их основными функциями будут функции приема, накопления, обработки и анализа непрерывного потока данных в режиме реального времени. В целях повышения производительности высоконагруженного приложения обработки потока данных необходимо осуществлять постоянный мониторинг, который отслеживает уровень производительности в реальном времени и своевременно реагирует на обнаруженные проблемы.

Требование оптимальной масштабируемости – реализуется добавлением вычислительных ресурсов для каждого узла, увеличением числа процессоров с архитектурой позволяющей работать на нескольких ядрах, прибавлением оперативной памяти и объемов хранилищ потоковых данных. «Должны быть предусмотрены разумные способы решения возникающих при росте (в смысле объемов данных, трафика или сложности) системы проблем» [1, с. 27]. Вертикальное масштабирование имеет ограничения связанное с размером узла и является экономически малоэффективным. Автоматическое горизонтальное масштабирование позволяет обрабатывать большие объемы потоковых данных в режиме реального времени.

Требование надежности и отказоустойчивости – достигается использованием репликации или партицирования в целях распределения потока данных по разным узлам и обеспечения сохранности данных при отказе одного или более узлов в кластере. «Система должна продолжать работать корректно (осуществлять нужные функции на требуемом уровне производительности) даже при неблагоприятных обстоятельствах (в случае аппаратных или программных сбоев либо ошибок пользователя)» [1, с. 27]. Отказоустойчивость гарантирует согласованное состояние и обеспечивается функционированием механизма восстановления, который сохраняет состояния высоконагруженного потокового приложения в контрольных точках. «Потоковая передача имеет высокую пропускную способность и может использоваться как без отслеживания состояния, так и с ним» [2, c. 153]. Процесс восстановления после сбоя должен включать идентификацию самого сбоя, устранение возможных проблем потери потоковых данных, оперативное восстановление системы потоковой обработки данных в рабочее состояние.  

Требование безопасности – обеспечивается наличием фильтрации трафика, межсетевых экранов, шифрования, контроля доступа, соответствующих регулярных обновлений, исключающих утечки конфиденциальной информации. Для обеспечения целостности информации и в целях исключения сбоев при обработке данных в реальном времени, потоковая система обработки данных должна гарантировать высокий уровень доступности, а наличие уязвимостей компонентов потоковой системы ослабляет безопасность высоконагруженного приложения обработки потока данных в режиме реального времени.

Требование удобства сопровождения – включает обеспечение работоспособности потоковой системы, работу с отказами, редактирование программного кода, выпуск обновлений, работа со сценариями пользователей, возврат технического долга, реализации новых функций. «Необходимо обеспечить возможность эффективной работы с системой множеству различных людей (разработчикам и обслуживающему персоналу, занимающимся как поддержкой текущего функционирования, так и адаптацией системы к новым сценариям применения)» [1, с. 27].

При исследовании паттернов реализаций высоконагруженного приложения обработки потоков данных в режиме реального времени выявляются основные критерии необходимые для сравнения этих паттернов.

Критерий пропускной способности – определяется мерой объема отправленных (полученных) потоковых данных в секунду или числом обработанных потоковых сообщений за единицу времени. Для обеспечения высокой пропускной способности или быстродействия необходимо разработать оптимальный алгоритм потоковой системы при увеличении нагрузки с репликацией узлов в кластере. Пропускная способность может быть рабочей и максимальной, значения определяются для расчета требуемого количества узлов с учетом скорость обработки потока одним потребителем. 

Критерий задержки – определяется временем на обработку сообщения или временным интервалом между получением сообщения и обработкой данного сообщения на выходе. Наличие пониженного критерия задержки важно для потоковой системы, так как обнаружение мошенничества и предупреждение потребителей является одной из важнейших функций в процессе обработки потоковых данных в режиме реального времени. «Процессы весьма интенсивно используют сеть, поэтому при расположении физических сетевых узлов как можно ближе друг к другу сокращаются задержки в сети» [3, с. 173].

Критерий доставки сообщений – определяет семантику доставки сообщений, может быть пониженный, средний или повышенный. Данный критерий привязан к существующим гарантиям доставки сообщений: максимум один раз (без дублей с возможными потерями); минимум один раз (без потерь с возможным дублями); однократно (без дублей и без потерь). Повышенный критерий доставки сообщений наилучший вариант, но его реализация является затратной.  

  Критерий надежности – определяет способность потоковой системы сохранять полную функциональность после сбоя. Данный критерий учитывает количество сохраненных реплик потоковых данных в кластере. Высокий критерий надежности обеспечивается повышенной доступностью, а повышение доступности реализуется за счет дополнительных вычислительных ресурсов. «Кроме того, приложения, допускающие запрос своего состояния, могут полагаться на резервные реплики для обслуживания трафика запросов в случае выхода из строя других экземпляров, что также способствует высокой доступности» [4, с. 124].

Критерий безопасности – определяет уровень безопасности потоковой системы. Повышенным критерий безопасности будет наилучшим вариантом, но как правило за этим следует снижение производительности и увеличение стоимости потоковой системы. Критерий безопасности обеспечивается наличием шифрования в момент передачи и хранения потоковых данных, а также наличием аутентификации и авторизации производителей и потребителей.

Критерий стоимости – определяет уровень финансовых затрат на разработку и эксплуатацию высоконагруженного приложения обработки потока данных в режиме реального времени. Критерий может меняться в зависимости от используемых технологий, уровня сложности алгоритма реализации, требований к масштабируемости потоковой системы, объемов обрабатываемых потоковых данных, уровня оплаты за хранение и доставку потоковых данных.          

Список литературы

  1. Клеппман Мартин Высоконагруженные приложения. Программирование, масштабирование, поддержка. – СПб.: Питер, 2018. – 640 с.
  2. Стренгхольт Питхейн Масштабируемые данные. Лучшие шаблоны высоконагруженных архитектур. – СПб.: Питер, 2022. – 368 с.
  3. Перрен Жан-Жорж Spark в действии / пер. с англ. Снастина А. В. – М.: ДМК Пресс, 2021. – 636 с.
  4. Сеймур Митч Kafka Streams и ksqlDB: данные в реальном времени. – СПб.: Питер, 2023. – 432 с.

Интересная статья? Поделись ей с другими: