Обзор SAS Event Stream Processing

Всем привет!

Меня неоднократно просили сделать обзоры на продукты SAS, с которыми мне доводилось работать.  И вот, представляю мой обзор на SAS Event Stream Processing или SAS ESP.

В статье будет рассматриваться версия SAS ESP 3.2.

Поехали.

Для предварительного понимание и небольшой демонстрации возможностей я рекомендую для начала посмотреть видео:

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

  • финансовые рынки и их системы
  • транзакционные данные в рамках выявление случаев мошенничества и их предотвращение (банки, телекомы и тд)
  • мониторинг и управление данными с датчиков
  • аналитика кибер-безопасности
  • персонализированный маркетинг
  • и т.д.

SAS ESP – в первую очередь, это продукт для фулл-стек разработчиков(!!!), то есть специалистов с широким набором технических навыков (SASJavaC++SQL), которые также знакомы с ещё более широким инструментарием межсистемного взаимодействия (XMLMQRelational DatabaseNOSQLWeb ServicesOperational Systems и тд)!

Продукт позволяет создать приложение-проект, который может достаточно быстро обрабатывать и анализировать большое количество непрерывно входящих событий (streaming).

Общая схема работы процессинга:

esp

Все блоки на диаграмме связаны:

  1. Engine – XML движок, является фундаментом SAS ESP.
  2. Project – второй уровень структуры. В рамках одного Engine может быть один и более Project. На данном уровне происходит настройка выделяемых ресурсов и интерфейсов.
  3. Continuous Query (CQ) – третий уровень структуры. В рамках одного Project может быть один и более CQ. На этом уровне создаётся диаграмма работы проекта, логическая часть.
  4. Source Windows – окна, откуда поступают события в проект. В рамках одного CQ можеть один и более источников.
  5. Derived Windows – окна, в которых происходят разного рода преобразования с данными. Например, агрегация по времени, фильтрация, трансформация и тд. В этих окнах делается самое «вкусное».
  6. Edge – стрелочки, которыми обеспечивается логика работы проекта.
  7. Connectors – это внутренний функционал системы по взаимодействию с различными источниками как на приём, так и на запись обратно в источник. Система может взаимодействовать:
    • СУБД (Oracle, MySQL, IBM DB2, Greenplum, PostgreSQL, SAP Sybase ASE, Teradata, Microsoft SQL Server, IBM Informix, Sybase IQ)
    • Плоские файлы (бинарные, csv, xml, json, sas datasets)
    • Очереди (IBM MQ, Rabbit MQ, Solace Systems)
    • Simple Mail Transfer Protocol (SMTP)
    • Sniffer (local network interface)
    • ETL средство (Teradata Parallel Transporter)
    • Облако (Tervela Data Fabric)
    • Шина (Tibco Rendezvous)
    • PI Asset Framework (AF) server
    • Другие проекты SAS ESP
    • SAS DataFlux Data Management Platform
    • Свой коннектор (C##, Java)
  8. PublishSubscribe API – интерфейс через который происходит взаимодействие между коннекторами и источниками.
  9. Adapters – это внешний функционал системы по взаимодействию с различными источниками как на приём, так и на запись обратно в источник. Аналогичная функциональность с коннекторами. Под адаптерами понимается внешне запускаемая программа, которая может работать как на самом сервере, так и на любой другой машине, к которой есть доступ.

Для разработчика, система состоит из 3ех компонентов:

  • Веб-интерфейс используется только для разработки приложений-проектов (лицо, которое продают на встречах).

esp web

В рамках веб-интерфейса разработка происходит в Project (2) и Continuous Query (3).

Когда проект готов, его можно сохранить в XML файл. Этот файл детально описывает все поля и настройки созданного в рамках разработки проекта. XML далее используется для запуска на сервере в продуктивном режиме.

  • Внутренний XML сервер (engine) ESP (чёрный ящик).

esp black

Когда проект запускается в промышленную эксплуатацию, по сути, он является чёрным ящиком. Этот ящик получает данные на вход и отдаёт что-то на выход.

  • Есть ещё один компонент для визуализации потока данных в чёрном ящике ESP. Этот компонент называется StreamViewer. Неплохо видно его использование в этом ролике:

Но к моему стыду, я так и не смог найти ему какое-то адекватное применение. Вот некоторые из причин:

  1. Убогий интерфейс и не интуитивная платформа.
  2. Нет информации, что происходит в логике модели, и как следствие, нет визуальных счётчиков на узлах.
  3. Посмотрите ещё раз второе видео и представьте, как это всё будет выглядеть с потоком событий хотя бы в 5 операций в секунду?

Система ESP обычно используется для сильно нагруженных систем, 5 и выше операций в секунду. Вполне реальные кейсы можно получить и в 2000 операций в секунду. На презентациях показывают и 100000 операций в секунду, используя в качестве источника плоский файл.

Я хочу особо отметить то, что компания SAS ставит одним из своих приоритетов развитие ESP. Это означает, что система постоянно развивается, приходят обновления и правятся существующие ошибки. По своему опыту могу сказать, что коллеги из SAS активно помогают с продуктом, серьёзные проблемы решаются в течение пару недель. На мой взгляд, это огромный плюс.

Компания SAS ещё интересует многих тем, что в её продуктах можно использовать SAS код, как SAS Base, так и SAS DS2. А это очень помогает в сложных задачах.

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

Итого, что мы имеем?

  1. Систему обработки потоковых событий
  2. Большое количество интегрированных источников + есть возможность написать коннектор своими силами
  3. Сравнимо быструю систему, SAS продаёт её как самую быструю на рынке
  4. Постоянно обновляемую и дорабатываемую систему с очень (!!!) шустрым исправлением багов
  5. Возможность использование SAS кода, например, для трансформации или скоринга
  6. Систему может разрабатывать и поддерживать всего 1 специалист
  7. Поддерживает отказоустойчивое решение через кластеры

Когда SAS ESP лучше использовать?

  1. Когда требуется сократить стоимость использования системы SAS RTDM
  2. Когда скорости SAS веб-сервисов уже не хватает
  3. Когда требуется использовать онлайн-модели SAS Enterprise Miner в высоко нагруженной системе

На этом я остановлюсь и не буду вдаваться:

  • в подробности, что такое события и с чем их едят
  • в примеры и шаблоны построения проектов
  • в особенности интеграции с источниками
  • в тонкости настройки и оптимизации
  • и тд.

И всё же, я уверяю, это всё очень интересно и увлекательно! Будут вопросы — пишите, буду рад на них ответить.

Удачи и успехов в работе с продуктами SAS!

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.