Всем привет!
Меня неоднократно просили сделать обзоры на продукты SAS, с которыми мне доводилось работать. И вот, представляю мой обзор на SAS Event Stream Processing или SAS ESP.
В статье будет рассматриваться версия SAS ESP 3.2.
Поехали.
Для предварительного понимание и небольшой демонстрации возможностей я рекомендую для начала посмотреть видео:
SAS ESP, как правило, используется в режиме реального времени для обработки потоков событий. К таким источникам событий можно отнести:
- финансовые рынки и их системы
- транзакционные данные в рамках выявление случаев мошенничества и их предотвращение (банки, телекомы и тд)
- мониторинг и управление данными с датчиков
- аналитика кибер-безопасности
- персонализированный маркетинг
- и т.д.
SAS ESP – в первую очередь, это продукт для фулл-стек разработчиков(!!!), то есть специалистов с широким набором технических навыков (SASJavaC++SQL), которые также знакомы с ещё более широким инструментарием межсистемного взаимодействия (XMLMQRelational DatabaseNOSQLWeb ServicesOperational Systems и тд)!
Продукт позволяет создать приложение-проект, который может достаточно быстро обрабатывать и анализировать большое количество непрерывно входящих событий (streaming).
Общая схема работы процессинга:
Все блоки на диаграмме связаны:
- Engine – XML движок, является фундаментом SAS ESP.
- Project – второй уровень структуры. В рамках одного Engine может быть один и более Project. На данном уровне происходит настройка выделяемых ресурсов и интерфейсов.
- Continuous Query (CQ) – третий уровень структуры. В рамках одного Project может быть один и более CQ. На этом уровне создаётся диаграмма работы проекта, логическая часть.
- Source Windows – окна, откуда поступают события в проект. В рамках одного CQ можеть один и более источников.
- Derived Windows – окна, в которых происходят разного рода преобразования с данными. Например, агрегация по времени, фильтрация, трансформация и тд. В этих окнах делается самое «вкусное».
- Edge – стрелочки, которыми обеспечивается логика работы проекта.
- 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)
- PublishSubscribe API – интерфейс через который происходит взаимодействие между коннекторами и источниками.
- Adapters – это внешний функционал системы по взаимодействию с различными источниками как на приём, так и на запись обратно в источник. Аналогичная функциональность с коннекторами. Под адаптерами понимается внешне запускаемая программа, которая может работать как на самом сервере, так и на любой другой машине, к которой есть доступ.
Для разработчика, система состоит из 3ех компонентов:
- Веб-интерфейс используется только для разработки приложений-проектов (лицо, которое продают на встречах).
В рамках веб-интерфейса разработка происходит в Project (2) и Continuous Query (3).
Когда проект готов, его можно сохранить в XML файл. Этот файл детально описывает все поля и настройки созданного в рамках разработки проекта. XML далее используется для запуска на сервере в продуктивном режиме.
- Внутренний XML сервер (engine) ESP (чёрный ящик).
Когда проект запускается в промышленную эксплуатацию, по сути, он является чёрным ящиком. Этот ящик получает данные на вход и отдаёт что-то на выход.
- Есть ещё один компонент для визуализации потока данных в чёрном ящике ESP. Этот компонент называется StreamViewer. Неплохо видно его использование в этом ролике:
Но к моему стыду, я так и не смог найти ему какое-то адекватное применение. Вот некоторые из причин:
- Убогий интерфейс и не интуитивная платформа.
- Нет информации, что происходит в логике модели, и как следствие, нет визуальных счётчиков на узлах.
- Посмотрите ещё раз второе видео и представьте, как это всё будет выглядеть с потоком событий хотя бы в 5 операций в секунду?
Система ESP обычно используется для сильно нагруженных систем, 5 и выше операций в секунду. Вполне реальные кейсы можно получить и в 2000 операций в секунду. На презентациях показывают и 100000 операций в секунду, используя в качестве источника плоский файл.
Я хочу особо отметить то, что компания SAS ставит одним из своих приоритетов развитие ESP. Это означает, что система постоянно развивается, приходят обновления и правятся существующие ошибки. По своему опыту могу сказать, что коллеги из SAS активно помогают с продуктом, серьёзные проблемы решаются в течение пару недель. На мой взгляд, это огромный плюс.
Компания SAS ещё интересует многих тем, что в её продуктах можно использовать SAS код, как SAS Base, так и SAS DS2. А это очень помогает в сложных задачах.
Хорошим дополнением является то, что систему можно развернуть на кластерах. Правда это делается только для отказоустойчивости. Хотелось бы иметь возможность распараллеливания вычислений в рамках кластера, но пока её нет.
Итого, что мы имеем?
- Систему обработки потоковых событий
- Большое количество интегрированных источников + есть возможность написать коннектор своими силами
- Сравнимо быструю систему, SAS продаёт её как самую быструю на рынке
- Постоянно обновляемую и дорабатываемую систему с очень (!!!) шустрым исправлением багов
- Возможность использование SAS кода, например, для трансформации или скоринга
- Систему может разрабатывать и поддерживать всего 1 специалист
- Поддерживает отказоустойчивое решение через кластеры
Когда SAS ESP лучше использовать?
- Когда требуется сократить стоимость использования системы SAS RTDM
- Когда скорости SAS веб-сервисов уже не хватает
- Когда требуется использовать онлайн-модели SAS Enterprise Miner в высоко нагруженной системе
На этом я остановлюсь и не буду вдаваться:
- в подробности, что такое события и с чем их едят
- в примеры и шаблоны построения проектов
- в особенности интеграции с источниками
- в тонкости настройки и оптимизации
- и тд.
И всё же, я уверяю, это всё очень интересно и увлекательно! Будут вопросы — пишите, буду рад на них ответить.
Удачи и успехов в работе с продуктами SAS!