Подсистема передачи файлов
Подсистема передачи файлов предоставляет требуемые методы для управления передачей файлов между удаленными вещами, репозиториями файлов и объединенными серверами.
Если не указано явно, для передачи файлов между клиентом Edge и ThingWorx Platform требуется, чтобы клиент был подключен от начала передачи до ее завершения. Передачу файлов платформой ThingWorx можно инициировать и, когда клиент Edge отключен, выдать ThingWorx Platform команду выполнить копирование с помощью функциональности постановки в очередь. Передаваемые файлы, которые можно ставить в очередь, помещаются в автономную очередь и выполняются после подключения агента.
* 
Если в качестве поставщика хранилища данных используется PostgreSQL, автономная очередь сохраняется, чтобы поддерживать аварийное переключение с целью обеспечить высокий уровень доступности ThingWorx.
После инициирования передачи клиент Edge не должен отключаться, иначе передача будет прервана. Передача файлов, поставленная в очередь, будет отменена, если она не начнется в течение времени, заданного в настройке конфигурации Время жизни (с) передачи данных, помещаемой в очередь.
Обычно передачами файлов управляет ThingWorx Platform. Однако передача файлов может управляться Edge, если добавить профиль вещи EdgeControlled к удаленной вещи, которая участвует в передаче файлов. Управляемые Edge передачи файлов должны иметь источник или цель, заданные как вещь FileRepository в ThingWorx Platform. При управляемой Edge передаче файлов передачей управляет клиент Edge. Клиент Edge вызывает службу Touch для обновления метки времени передачи файлов в процессе передачи. Если клиент Edge не сделает это, ThingWorx Platform остановит передачу файлов по тайм-ауту. Устройство Edge показывает, была ли передача успешна или завершилась по ошибке.
Можно встроить контекст, используя параметр metadata при инициировании передачи файлов. Это поле является объектом JSON, который может содержать любой произвольный формат JSON. Базовая функциональность ThingWorx Platform использует это поле для выдачи дополнительных инструкций клиенту Edge. Для таких передач информация в поле metadata не должна изменяться никаким другим процессом, кроме ThingWorx Platform.
Передача файлов между федеративными серверами
Для передачи файлов между федеративными серверами выполните следующие действия.
* 
Косая черта (/) является рекомендуемым разделителем путей для репозиториев файлов.
1. Сконфигурируйте объединение, содержащее ThingWorx ServerA и ThingWorx ServerB. Дополнительные сведения см. в разделе Конфигурирование объединения.
2. Добавьте вещь ThingA в ServerA, используя шаблон вещи FileRepository.
a. Установите флажок Публикуемые для вещи ThingA, чтобы это было доступно для других серверов ThingWorx.
3. Добавьте вещь RemoteThingA в ServerB, используя шаблон вещи RemoteThingWithFileTransfer.
a. В поле ИД введите ThingA@ServerA.
4. Скопируйте файл (например, test.txt) в корневую папку SystemRepository на сервере ServerB.
5. Откройте FileTransferSubsystem на сервере ServerB и выполните сервис copy со следующими значениями параметров.
sourceRepo: SystemRepository
sourcePath: /
sourceFile: test.txt
targetRepo: RemoteThingA
targetPath: /
targetFile: test.txt
Не изменяйте значения по умолчанию для других параметров.
6. Перейдите в папку /ThingworxStorage/repository/ThingA на сервере ServerA и убедитесь, что файл test.txt успешно в нее скопирован.
Конфигурация
Настройки передачи файлов
Тип данных
По умолчанию
Примечания
Минимальное число потоков, выделенных для пула передачи файлов
NUMBER
10
Определяет размер основного пула для ThreadPoolExecutor. Этот пул потоков используется для координации логики передачи файлов под управлением платформы.
Максимальное число потоков, выделенных для пула передачи файлов
NUMBER
10
Определяет максимальный размер пула потоков для ThreadPoolExecutor.
При асинхронной передаче файлов информация может быть потеряна, если ThingWorx выключится. Предположим, например, что эта настройка имеет значение по умолчанию 10 и выполняется 50 продолжительных передач файлов. Если ThingWorx выключится, будет потеряно 40 файлов.
Максимум записей очереди перед добавлением нового рабочего потока
NUMBER
100
Определяет верхний предел количества элементов в очереди, используемой в ThreadPoolExecutor.
Это ограничивает количество активных передач, разрешенных одновременно.
Время ожидания потока в состоянии простоя (с)
NUMBER
600000
Определяет, как долго следует сохранять неактивные потоки в ThreadPoolExecutor. По истечении указанного времени пул будет завершать выполнение потоков и возвращаться к размеру основному пула.
Тайм-аут передачи файлов в состоянии простоя (c) (c)
NUMBER
30
Между каждым шагом процесса передачи файлов (checksum, ReadFromBinaryFile, WriteToBinaryFile, validation) проверяется время ожидания простоя. Если шаг занимает больше времени, чем заданный тайм-аут, передача отменяется.
* 
Не используйте этот параметр для асинхронных копий.
Максимальный размер блока передачи файлов (в байтах)
NUMBER
128000
Определяет число байтов, запрашиваемых для операций ReadFromBinaryFile и WriteToBinaryFile. Представляет размер блока для каждой записи.
Эта переменная задает максимальный размер блока во время передачи файлов на системном уровне.
Конфигурация EMS по-прежнему имеет более высокий приоритет. Однако если EMS конфигурируется с размером buffer_size, превышающим заданный в этой переменной, эта переменная будет ограничивать размер блока. Если через EMS конфигурируются размеры блока, превышающие 128 КБ, это значение должно быть увеличено. Максимальный уровень компиляции составляет 1 МБ.
Максимальный размер передачи файлов (в байтах)
NUMBER
100000000
Определяет максимальное число байтов, которое поддерживается в операции копирования.
Если исходный файл превышает это значение, возникает сбой передачи и выводится сообщение об ошибке.
* 
При сбое передачи больших файлов обновите настройку Максимальный размер передачи файлов (в байтах). Дополнительные сведения см. в статье CS442261.
Максимальное число передач файлов, разрешенное для автономной очереди
NUMBER
50000
Определяет максимальное разрешенное в системе число автономных передач файлов, помещенных в очередь.
Максимальное число передач файлов на одну вещь, разрешенное для автономной очереди
NUMBER
10
Определяет максимальное разрешенное число автономных передач файлов, помещенных в очередь, для одной вещи.
Время жизни (с) передачи данных, помещаемой в очередь
NUMBER
86400
Определяет максимальное время, когда передача файлов из очереди может выполняться в автономной очереди.
Передача файлов удаляется из автономной очереди по истечении этого периода времени.
Максимальное разрешенное общее число операций переноса файлов под управлением Edge
NUMBER
500
Определяет максимальную разрешенную в системе передачу файлов.
Общие параллельные управляемые Edge передачи в платформе. Это значение является отдельным от максимально разрешенных постоянных передач, которые управляются настройкой Максимум записей очереди перед добавлением нового рабочего потока.
Верхний предел этого свойства контролируется опцией MaxConcurrentFileTransfersEdgeCtrl в файле platform-settings.json. Значение по умолчанию: 1000.
Максимально допустимое общее количество передач управляемых Edge файлов для одной вещи
NUMBER
2
Максимальное количество параллельных передач, разрешенных в вещь или из вещи, управляемой Edge. Например, значение 2 означает, что одна управляемая Edge вещь может иметь одновременно только две активные передачи (выгрузки или загрузки). Последующие запросы на удаление передачи файлов из очереди отклоняются, пока в очереди есть место.
Время ожидания простоя для операций переноса файлов под управлением Edge (с)
NUMBER
600
Определяет максимальное время, в течение которого задание может остаться активным без выполнения каких-либо действий с ним (например, передачи данных или обновления состояния задания). Диапазон: 1-3600 секунд. Оно аналогично времени ожидания простоя для постоянных заданий передачи, но обычно превышает последнее, чтобы поддерживать цикл проверки опрашиваемых устройств с помощью запросов ping.
File Transfer Cleanup Frequency (sec)
NUMBER
10
Определяет частоту задания очистки для оценки операций передачи файлов.
Задание очистки удаляет устаревшие и просроченные задания из таблицы активных заданий. Это действие освобождает места для передачи файлов, что помогает другим операциям, находящимся в очереди. Рекомендуемые минимальное и максимальное значения должны находиться в пределах от 1 секунды до 60 секунд соответственно.
Значение для этой настройки должно быть тщательно выбрано. Ожидается, что значение по умолчанию 10 с будет работать для большинства вариантов использования.
При очень малом значении слишком часто будет запускаться фоновая задача. При этом будут получаться все текущие активные задания передачи файлов из кэша и рассчитываться их срок действия. Это приводит к избыточным расчетам и нагрузке на кэш.
При очень большом значении задание будет запускаться реже, и передача файлов может задерживаться с удержанием действительного резервирования и без своевременного освобождения резервирования. Это может повлиять на общие операции передачи файлов, если имеется много задержанных операций, например при нестабильной работе сети или прерыванию соединения устройств и т. п.
Было ли это полезно?