Warp 10

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 18:59, 30 января 2019.
Warp10
Warp10logo.png
Создатели: Mathias Herberts
Разработчики: SenX
Выпущена: 19 September 2017 года; 4 years ago (2017-09-19)
Постоянный выпуск: 2.0.2 / 18 December 2018 года; 2 years ago (2018-12-18)
Предыдущий выпуск: 2.0.1 / 4 December 2018 года; 2 years ago (2018-12-04)
Состояние разработки: Active
Написана на: C++ (язык программирования)
Операционная система: Windows,Linux,MacOS
Платформа: X86-64
Локализация: Английский язык
Лицензия: Apache License 2.0
Веб-сайт www.warp10.io

Warp 10 — это платформа, предназначенная для сбора, хранения и анализа данных датчиков и временных рядов [1]. Warp 10 является одновременно базой данных временных рядов и связанной аналитической средой. Warp 10 выходит за рамки простого анализа временных рядов, поддерживая Geo Time Series, который является результатом объединения совокупности показаний датчика с расположением датчика при каждом измерении. Аналитическая среда Warp 10 основана на языке программирования потока данных WarpScript. Благодаря огромному количеству доступных функций, Warp 10 является самой совершенной платформой временных рядов. [Источник 1]

Особенности платформы

Warp 10 Storage Engine

База данных временных рядов, предоставляемая Warp 10, называется Warp 10 Storage Engine. Основные свойства:

  • Поддержка модели данных Geo Time Series
  • Высокая производительность и масштабируемость
  • Высокий уровень безопасности, обеспечиваемый строгой аутентификацией / авторизацией
  • Использование стандартных протоколов для простоты использования

Существуют различные версии Storage Engine в зависимости от масштаба:

  • Apache Hbase Distributed (Миллиарды рядов, триллионы точек данных, обработка миллионов точек данных в секунду)
  • LevelDB Standalone (Десятки миллионов рядов, миллиарды точек данных, обработка 100 тыс. точек данных в секунду)
  • LevelDB Edge (Миллионы рядов, сотни миллионов точек данных, обработка 10000 точек данных в секунду)

Аналитическая среда

Аналитическая среда предоставляет язык программирования потока данных под названием WarpScript с почти 1000 функциями, специально созданными для обработки и анализа временных рядов. Аналитическая среда плавно интегрируется с существующими инструментами и приложениями с высокой совместимостью. Благодаря механизмам расширения язык WarpScript может использоваться для временных рядов, размещенных на любом уровне хранения, от баз данных SQL до хранилищ объектов, включая любую базу данных временных рядов.

Модель данных

Платформа Warp 10 обрабатывает один тип данных, который называется Geo Time Series (GTS). GTS получается путем слияния временного ряда измерений, последовательности пар метка времени / значение, с тремя временными рядами местоположения датчика (широта, долгота, высота) во время измерения. Эта удобная структура данных позволяет эффективно манипулировать измерениями движущегося датчика. Для поддержки самого разнообразного набора вариантов использования значения GTS могут быть четырех типов: long, double, boolean или UTF-8 string. Существует возможность смешивать типы значений в одной GTS, данная совокупность будет обрабатываться во время чтения, когда будет происходить изменение данных с помощью языка WarpScript. Каждый Geo Time Series уникально идентифицируется классом и набором меток (ключ / значения). Класс можно интерпретировать как тип датчика, а метки как однозначно идентифицирующие конкретный экземпляр в классе. GTS также может иметь атрибуты, которые представляют собой другой набор ключей / значений, единственное отличие от меток состоит в том, что атрибуты не идентифицируют GTS, они просто существуют для предоставления дополнительной информации, и, поскольку они не идентифицируют GTS, их можно изменять во время существования временного ряда Geo. Для максимальной гибкости, имена классов и меток и значения могут быть любой допустимой строкой UTF-8. Если строки содержат символы, которые нельзя набрать, нужно кодировать строки с помощью URL, используя% hh, чтобы заменить эти символы. [Источник 1]

Безопасность

Платформа Warp 10 предоставляет несколько собранных структур для интеграции платформы в систему аутентификации пользователя или фирмы. Контроль доступа для обновления и чтения данных достигается за счет использования криптографических токенов. Особенности токенов:

  • Используются для авторизации доступа к Warp 10 Storage Engine
  • Предоставляют доступ для операций WRITE (и DELETE) или READ
  • Встраивают заметки для обмена данными
  • Встраивают гибкие атрибуты для расширяемости

Токены поставляются с инструментом командной строки Worf. Роли (владелец, производитель и приложение) используются для определения уровня доступа к данным. Также токены создаются с заданным значением Timestamp (мс с начала эпохи) и действительны до expiryTimestamp (мс с начала эпохи). Токены могут быть отозваны через TRL (списки отзыва токенов). [Источник 2]

Установка

В данном разделе описано, как установить и взаимодействовать с автономной версией платформы Warp 10. В нем также описываются инструменты WarpScript IDE.

Шаг 1. Установка Warp 10

Перейдите на страницу загрузки и загрузите последнюю версию

Шаг 2. Извлечь Warp 10

Распакуйте загруженный архив и перейдите в каталог bin.
$ tar xf warp10-X.Y.Z.tar.gz
$ cd warp10-X.Y.Z
$ bin

Шаг 3. Установить Java 8

Установите java 8 JRE
$ sudo apt update
$ sudo apt install openjdk-8-jre-headless

Шаг 4. Начальная загрузка Warp 10

Подготовьте среду платформы Warp 10 для вашего компьютера:

  • Создайте пользователя warp10, если это необходимо
  • Создайте автономный файл конфигурации из шаблона
  • Подготовьте иерархию каталогов
  • Установите права доступа к файлу
Начните загрузку
$ sudo ./warp10-standalone.init bootstrap
Затем создайте пользователя
$ sudo su warp10

Открывая Warp 10 , вы столкнетесь с некоторыми ограничениями (количество данных в FETCH, максимальное количество операций). Все конфигурации Warp 10 находятся в файле etc / conf-standalone.conf.

Шаг 5. Запуск Warp 10

Введите команду как пользователь Warp 10
$ ./warp10-standalone.sh start

При первом запуске этот скрипт создаст базу данных LevelDB . Будет предоставлен начальный набор токенов и несколько полезных команд для начала взаимодействия с экземпляром Warp 10.

Шаг 6. Генерация токенов Warp 10

Платформа Warp 10 основана на надежной модели безопасности, которая позволяет пользователю жестко контролировать, кто имеет право записывать и / или читать данные.По умолчанию при первом запуске сценарий инициализации Warp 10 создаст токен READ и WRITE для тестового приложения и io.warp10.bootstrap для тестового пользователя, который является как производителем, так и владельцем данных.

Зададим для примера токен с 10-летним сроком службы
$ ./warp10-standalone.sh worf MyTestApp 315360000000

Пример вывода

 1 {
 2   "read": {
 3     "token": "hMeJHyhK5wiHur_dsO8kccnzWLAVQO7eOfvOVhXAlmftexalPBy6cENIHwv8JDx10BSBlW0Baz.oOj1uONYYY3H5zdD_WTGePMC_cb2lRr1m_IfUgt.sZYtTdlvU0zbB",
 4     "tokenIdent": "bce750570d41bb57",
 5     "ttl": 315360000000,
 6     "application": "MyTestApp",
 7     "applications": [
 8       "MyTestApp"
 9     ],
10     "owners": [
11       "1457e6fb-6d6e-4875-a540-2bc25e619b5a"
12     ],
13     "producer": "1457e6fb-6d6e-4875-a540-2bc25e619b5a",
14     "producers": []
15   },
16   "write": {
17     "token": "0RJlPOj4g7SbicLhRq8AAR3egfhMeoJFy7dXm_RtDz5LUGSx3HGlBYvSwa7i_0KIxEqjp9JUPHv4bgBIXJ0TfUyfmvsvQsnD3pNQJ6J3AtoBc77ZiWH.ZF",
18     "tokenIdent": "eb8dd24bfe8af277",
19     "ttl": 315360000000,
20     "application": "MyTestApp",
21     "owner": "1457e6fb-6d6e-4875-a540-2bc25e619b5a",
22     "producer": "1457e6fb-6d6e-4875-a540-2bc25e619b5a"
23   }
24 }

Шаг 7. Перевод данных в формат GTS

Теперь вы можете преобразовать данные в формат GTS. Один GTS - это один временной ряд.GTS определяется значением CLASS и LABELS.

Данные отправляются в коде запроса POST, по одной точке данных на строку. Каждая строка соответствует формату ввода GTS:
$ TS/LAT:LON/ELEV CLASS{LABELS} VALUE

Пример допустимых строк ввода:

$ #latitude, longitude, elevation.
$ 959860945800000/37.399386:-3.071806/214748 engine.torque{vehicletype=x21,serial=VF451112448F45B} 206
$ #no latitude, no longitude, no elevation
$ 1521444669000000// tool_speed{plant=paris,machine=47} 104.392492
$ =1521444669000020// 105.240093
$ =1521444669000040// 105.336131
$ =1521444669000060// 106.168065
$ #starting a line with "=" means "copy previous names and labels".
$ #no timestamp, no elevation
$ /48.0:-4.5/ bar{label0=val0} 3.14
$ #LONG type
$ // aa{} -4521
$ #DOUBLE type
$ // bb{} -4521.0
$ #BOOLEAN type
$ // cc{} T
$ #STRING type
$ // dd{} 'it%27s ok'
$ 

Шаг 8. Отправление данных

В конфигурации по умолчанию Warp 10 прослушивает только 127.0.0.1. Если вы планируете получить к нему доступ с другого компьютера в вашей сети, вы должны изменить standalone.host для прослушивания через любой интерфейс. Отредактируйте config conf-standalone.conf в каталоге etc с помощью любого текстового редактора и перезапустите Warp 10. Вы можете отправить данные используя cURL:

$ POST /api/v0/update HTTP/1.1
$ Host: host
$ X-Warp10-Token: wsedrfg.53ef32.detgertyyhefwe5t677456rrfhgbfyhgherdtyreeryer
$ Content-Type: text/plain
$ 1380475081000000// foo{label0=val0,label1=val1} 123
$ /48.0:-4.5/ bar{label0=val0} 3.14
$ 1380475081123456/45.0:-0.01/10000000 foobar{label1=val1} T
Затем отправьте файл с помощью cURL
$ curl -v  -H 'Transfer-Encoding: chunked' -H 'X-Warp10-Token: 0RJlPOj4g7SbsnD3pNQJ6J3AtoBc77ZiWH.ZF' -T example.gts 'http://127.0.0.1:8080/api/v0/update'
Получите все эти данные, используя свой токен READ.
$ curl -v  --data-binary "[ 'hMeJHyhK5wiHur_dsO8kcc_IfUgt.sZYtTdlvU0zbB' '~.*' {} NOW -1 ] FETCH" 'http://127.0.0.1:8080/api/v0/exec' 

Если все в порядке, вы должны получить HTTP 200 OK с самым последним назначением данных каждого GTS в формате JSON.

Шаг 9. Quantum интерфейс

Warp 10 может быть дополнен плагинами и расширениями. Quantum - это плагин, поставляемый и предварительно настроенный с автономной версией или версией докера. Quantum от Warp 10 - это веб-приложение, цель которого - позволить пользователям взаимодействовать с платформой в удобной для пользователя форме, предлагая альтернативу взаимодействию из командной строки.

Откройте http: // localhost: 8090 / в браузере. Вам необходимо заменить API (Application Programming Interface) для Warp 10 на вашем компьютере . Нажмите «Выбрать другой бэкэнд», введите URL-адрес API вашего компьютера и нажмите кнопку проверки. На рисунке 1 продемонстрирована конфигурация выбора на компьютере.

Рисунок 1 – Выбор бекенда


Как только конфигурация сервера завершена, вы можете выполнить WarpScript для своего экземпляра Warp 10. Например, самый первый WarpScript, который вы вводите в этом руководстве, использует curl, чтобы прочитать все данные, которые вы нажали:

$ //store read token in a variable
$ 'hMeJHyhK5wiHur_dsO8kccnzWLAVQO7eOfvOVhXAlmftexalPBy6cENIHwv8JDx10BSBlW0Baz.oOj1uONYYY3H5zdD_WTGePMC_cb2lRr1m_IfUgt.sZYtTdlvU0zbB' 'myreadtoken' STORE
$ //fetch the most recent point of every GTS this token can access
$ [ $myreadtoken '~.*' {} NOW -1 ] FETCH 

На рисунке 2 представлено взаимодействие Warpscript с средой разработки пользователя.

Рисунок 2 – Использование Warpscript


Шаг 10. VSCode IDE для WarpScript

Visual Studio Code - это редактор исходного кода, разработанный Microsoft для Windows, Linux и macOS. Данный редактор включает поддержку отладки, встроенный контроль Git, подсветку синтаксиса, интеллектуальное завершение кода, фрагменты кода и переработку кода. После установки VS Code, запустите VS Code Quick Open (Ctrl + P), нажмите ввод. Создайте файл test.mc2 с warpscript:

$ //store read token in a variable
$ 'hMeJHyhK5wiHur_dsO8kccnzWLAVQO7eOfvOVhXAlmftexalPBy6cENIHwv8JDx10BSBlW0Baz.oOj1uONYYY3H5zdD_WTGePMC_cb2lRr1m_IfUgt.sZYtTdlvU0zbB' 'myreadtoken' STORE
$ //fetch the most recent point of every GTS this token can access
$ [ $myreadtoken '~.*' {} NOW -1 ] FETCH

Если расширение загружено правильно, теперь у вас есть подсветка синтаксиса, автозаполнение, подсказка при наведении курсора, подстановка локального макроса. На рисунке 3 показано создание проекта.

Рисунок 3 – Создание проекта


По умолчанию расширение VSCode будет выполнять WarpScript для API localhost. Чтобы изменить адрес сервера Warp 10, откройте настройки VSCode (Ctrl + Shift + P, введите «settings», нажмите enter), найдите «warpscript» и скопируйте и вставьте настроенную строку из левой панели в правую панель. Нажмите Ctrl + Alt + E, чтобы запустить сценарий. На рисунке 4 представлен пример работы программы.

Рисунок 4 – Сценарий программы


Результат JSON будет отображаться в правой части редактора. Таким образом, выполняя последовательно приведённые выше указания, вы можете собрать Warp 10 для дальнейшего изучения. [Источник 3]

Примечания

Источники

  1. 1,0 1,1 What is Warp 10? // warp10 [2018-2019]. Дата обновления 24.11.2018 URL: https://www.warp10.io/content/01_About (дата обращения: 10.01.2019)
  2. Security // warp10 [2018-2019]. Дата обновления 24.11.2018. URL: https://www.warp10.io/content/03_Documentation/05_Security/01_Overview (дата обращения: 11.01.2019)
  3. Getting started // warp10 [2018-2019]. Дата обновления 24.11.2018 URL: https://www.warp10.io/content/02_Getting_started (дата обращения: 11.01.2019)

Ссылки