Масштабное обновление аналитической платформы Loginom. Loginom стал кроссплатформенным — серверные редакции Standard и Enterprise доступны для операционных систем Linux и Windows. Появилась интеграция с брокером сообщений Kafka. Новые возможности появились в обработчике JavaScript, при импорте данных из файлов, в визуализаторе OLAP-куб и в Отчетах. Улучшена и оптимизирована работа с базами данных. Повышена производительность.
Обращаем внимание: При обновлении на версию Loginom 7.0 (и выше) с любых версий 6.хх требуются новые лицензионные ключи. Для SP-ключей - это активация нового файла лицензии, для USB-ключей - это обновление прошивки. Новые лицензионные ключи необходимо получить до начала запуска процедуры обновления.
При подготовке релиза основные усилия были направлены на миграцию Loginom на операционную систему Linux. Изменения коснулись преимущественно технологического стека платформы и связаны с системными вызовами и библиотеками, сторонними библиотеками, работой со строками и различными интеграциями. Вместе с тем 80% серверной части было перенесено с предыдущей версии, а клиентская часть не претерпела значительных изменений, поэтому сценарии, подготовленные в Loginom под Windows, будут работать и под Linux, в некоторых случаях потребуется лишь перенастройка узлов.
Ниже приведено описание наиболее важных изменений.
Под Linux доступно логирование в journald. На странице Администрирование Loginom предусмотрен соответствующие настраиваемый параметр. Для работы метода логирования необходима библиотека systemd.so.0 (она гарантировано имеется, если в дистрибутиве Linux используется система инициализации systemd).
Kafka Apache — популярная распределенная система обмена сообщениями между серверными приложениями в режиме реального времени. Благодаря высокой пропускной способности, масштабируемости и отказоустойчивости применяется в крупных проектах с большими объемами данных.
В Loginom Enterprise появилась возможность импортировать и экспортировать сообщения в очередь Kafka. Интеграция с Kafka построена по тому же принципу, что и интеграция с базами данных. На первом этапе настраивается подключение, а затем в сценарии используются узлы на основе компонентов импорт или экспорт Kafka.
Проведена значительная работа, направленная на улучшение и оптимизацию работы с базами данных. В результате появилась поддержка:
Базу данных SQLite теперь можно использовать in-memory. При настройке подключения к базе данных SQLite достаточно установить соответствующий флаг и она будет развернута в памяти. При таком использовании значительно увеличивается скорость обработки данных. Пока БД находится в памяти, к ней можно подключиться из другого пакета, но при этом существует разграничение прав доступа на БД SQLite in-memory. База данных остается в памяти до тех пор, пока активно подключение к ней.
Добавлена возможность установки встроенного клиента Firebird.
Мастер настройки импорта из базы данных полностью переработан. В прежнем исполнении в режиме SQL-запроса было недостаточно места для текста запроса, а также невозможно было тут же увидеть переменные и воспользоваться ими. В обновленном мастере настройки работа с SQL-запросами стала значительно удобнее:
Реализована возможность в импорте из файлов (txt, csv, XML, Excel) читать данные предварительно выполнив http-запрос. Для этого в мастере настройки импорта из файла вместо имени файла можно указать URL. Поддерживается HTTP Basic Authentication, т.е. в URL можно передать логин и пароль. При импорте форматов txt, csv, xml для предпросмотра или предположения формата скачивается только тот объем данных, который необходим. В случае с xlsx форматом происходит скачивание всего файла в память, поэтому стоит обращать внимание на размер таких файлов.
Обработчики REST и SOAP-запрос функционируют без изменений. Однако при переносе сценариев между Loginom под Windows и Linux, в некоторых случаях потребуется перенастройка подключений REST и SOAP-сервис. В версии под Linux не поддерживается аутентификация при помощи предоставления сертификата клиента. В Windows он выбирался из хранилища личных сертификатов. При работе под Linux необходимо задать файл сертификата, ключа и пароля.
В мастере настройки подключения REST-сервис изменилось значение по умолчанию для параметра «Допустимый Content-Type ответа». Вместо */*
установлено application/json
.
Для пакетов, созданных до версии 6.4.0, в порту «Дополнительные данные» узла REST-запрос изменится выходной набор данных. Ранее значение в столбце «Код завершения» равнялось 0 не зависимо от Кода состояния HTTP. Теперь если Код состояния HTTP >= 400, то Код завершения будет равен 6.
В обработчик JavaScript добавлен File Storage API, позволяющий безопасно и без настройки прав выполнять все файловые операции:
Появилась возможность запускать Python в отдельном процессе, в том числе и параллельно. В редакциях под Windows возможен запуск как в рамках процесса Loginom, так и в отдельном процессе, а под Linux поддерживается только вариант работы в отдельном процессе.
В Python при отправке таблицы pandas в output_table для меток столбцов не производится транслитерация в функции prepare_compatible_table. Это актуально, если у столбцов pandas таблицы метки записаны кириллицей.
В свойствах пакета появилась опция «Сравнивать строковые уникальные значения бинарно». Сравнение строк изменится после закрытия пакета и всех зависимых от него открытых пакетов. При изменении настройки «Сравнивать строковые уникальные значения бинарно», может потребоваться переобучение обученных узлов. Действие опции распространяется на компоненты:
а также на визуализаторы:
Значение опции «Сравнивать строковые уникальные значения бинарно» выводится в Инспекторе свойств.
В мастера настройки обработчиков, алгоритмы которых используют генерацию псевдослучайных чисел, добавлена возможность установить Random Seed. Значение Random Seed можно задать через переменную, сгенирировать или установить флаг «Всегда случайно». Доступна команда копирования значения в буфер обмена.
Изменился файл конфигурации Loginom Integrator:
Integrator.dll.config
.appSettings
, system.web
, system.serviceModel
и system.webServer
вместе со всеми дочерними элементами.Изменился формат элемента configSections
:
было:
<configSections>
<section name="log" type="DeductorIntegrationServer.Core.LogConfigurationSection"/>
<section name="loginom" type="DeductorIntegrationServer.Core.DeductorConfigurationSection"/>
</configSections>
стало:
<configSections>
<section name="log" type="Integrator.Core.LogConfigurationSection, IntegratorCore"/>
<section name="loginom" type="Integrator.Core.LoginomConfigurationSection, IntegratorCore"/>
</configSections>
У элемента loginom
добавлен необязательный атрибут urlPathPrefix
, значение которого используется как префикс к адресу всех конечных точек REST и SOAP. Значение этого атрибута по умолчанию — пустая строка. Например, если Loginom Integrator развёрнут по адресу: http://localhost/lgi
, и атрибут urlPathPrefix
не указан, то help-страница для REST доступна по адресу: http://localhost/lgi/rest/help
. Если urlPathPrefix="abc"
, то адрес меняется на: http://localhost/lgi/abc/rest/help
. Чтобы в новом Интеграторе использовались те же адреса, что и в старом, нужно указатьurlPathPrefix="Service.svc"
.
loginom
добавлен необязательный атрибут swaggerUI
, который может принимать значение true
или false
. Атрибут включает/отключает генерацию страницы openapi/index.html
, которая реализует доступ к опубликованным сервисам через Swagger UI.Добавлена возможность задать расположение файла конфигурации Loginom Integrator. Расположение папки, из которой загружаются конфигурационные файлы Integrator.dll.config
и appsettings.json
, определяется по следующим правилам:
configdir
, то используется указанная папка (имя параметра можно указать в любом регистре);$PWD
) есть файл Integrator.dll.config
, то используется текущая папка;Integrator.dll
.Если в указанной папке отсутствует файл Integrator.dll.config
, то Integrator не запускается, а пользователь получает сообщение об ошибке.
Относительный путь к рабочей директории Интегратора определяется относительно файла конфигурации. Если в файле Integrator.dll.config значением атрибута workDir
является относительный путь, то он интерпретируется как путь относительно файла Integrator.dll.config. Значение атрибута workDir
может равняться .
(текущая папка). Это будет означать, что workdir
совпадает с configdir
.
Для каждого опубликованного пакета генерируется отдельный wsdl-файл (ранее описание SOAP-сервиса включало содержимое всех опубликованных пакетов). Добавлена генерация корневого wsdl-документа, который ссылается на все остальные wsdl-документы. По умолчанию корневой wsdl генерируется по адресу /soap?wsdl
. Если в конфигурационном файле Loginom Integrator задать значение атрибута urlPathPrefix="Service.svc"
, то дополнительно генерируется wsdl по адресу /Service.svc?wsdl
, который использовался в старом Интеграторе.
В Loginom Integrator появилась поддержка OpenAPI и Swagger UI. Теперь можно выполнять запросы для тестирования API на странице: http://host/lgi/openapi/index.html
.
Добавлена возможность подключаться к Loginom Server по Unix domain socket. Для этого в конфигурационном файле Loginom Integrator у элемента server
необходимо добавить атрибут unixsocket
, значение которого совпадает со значением параметра "Unix socket", установленного в параметрах подключения на странице "Администрирование" в Loginom Server.
При установке Loginom Integrator можно задать параметр Unix Socket в диалоге настроек. Для всех редакций значение этого параметра по умолчанию %ProgramData%\Loginom\Server\loginomd.socket
.
Алгоритм подключения Loginom Integrator к Loginom Server:
unixsocket
и host
, то сначала выполняется попытка подключения к unix socket, а если это не удалось, то по TCP;server
, то сначала выполняется попытка подключиться к unix socket, а затем - по TCP;Если Loginom Server находится не на localhost
относительно Интегратора, то при установке Loginom Integrator значение параметра Unix Socket, заданное по умолчанию, необходимо удалить (оставить поле пустым), чтобы избежать лишних попыток подключения.
Логируемые сообщения о подключении/отключении от сервера и т.п. формируются с учётом протокола, по которому выполнено подключение.
В Loginom Server Team добавлено создание unix socket
, если в файле конфигурации отсутствует элемент Bindings
. Файл сокета создаётся в рабочей директории Loginom Server и имеет имя loginomd.socket.
Подключение по Unix domain socket при использовании docker контейнеров избавляет от необходимости создавать виртуальную сеть между контейнерами. Кроме того, производительность выше при подключении по UDS как на Linux, так и на Windows.
Добавлена обработка заголовков X-Forwarded-Proto
и X-Forwarded-Host
. Эти заголовки влияют на генерируемые URL-ы в OpenAPI документах и на help-странице для REST-сервиса.
Изменился формат ответных SOAP-сообщений для старых пакетов, созданных до версии 6.3.0. Для старых пакетов будет использован тот же формат сообщений, что и для новых. При конвертации пользователь получит соответствующее сообщение.
Для версии под Linux добавлена возможность вывода логов Loginom Integrator в journald. В файле конфигурации добавлен элемент <journald level="Off" maxEntrySize="65536"/>
, который настраивает логирование в journald под Linux. Под Windows данный элемент игнорируется. Атрибут maxEntrySize
задаёт максимальный размер сообщения в байтах. Если атрибут отсутствует или содержит отрицательное значение, то используется значение по умолчанию: 2147483647.
Появилась возможность вывода логов Loginom Integrator в консоль. В секции log
файла конфигурации добавлен опциональный элемент console
, в котором настраивается уровень логирования в консоль. По умолчанию используется такой же формат сообщений, что и при логировании в файл. Но, если задана переменная окружения DOTNET_RUNNING_IN_CONTAINER
со значением true
или 1
(т.е. Integrator запущен из Docker контейнера), то в логируемых сообщениях не пишется текущая дата/время. Логи с уровнем Warn и выше пишутся в stderr, а остальные — в stdout. Если логи перенаправляются из консоли контейнера в journald хоста, то многострочные сообщения разбиваются на несколько (каждая строка получается отдельным сообщением в journald).
В Loginom Integrator изменен формат сообщений об ошибке. Для REST ответов реализован формат, соответствующий RFC 7807. При ошибках с кодом 400 в REST-сервисе возвращается JSON с описанием ошибки. Для SOAP-сервисов внесены некоторые изменения в структуру элементов.
За счет перехода с UTF16 на UTF-8 увеличилась скорость импорта и экспорта csv-файлов, в некоторых случаях в 1.3 раза.
С переходом на новые библиотеки стали быстрее обрабатываться xml-файлы. Например, при конвертации пакета из старой версии в новую прирост производительности составляет до 1.3 раза.
Увеличена скорость работы REST-клиент, особенно, когда в одном узле производится большое количество обращений к веб-сервису. В некоторых случаях до 5 раз быстрее.
Обратите внимание!