文件传输子系统
文件传输子系统可提供管理远程事物、文件信息库以及联合服务器之间的文件传输所需的方法。
除非特殊说明,否则在 Edge 客户端和 ThingWorx Platform 之间的文件传输需要客户端从始至终均处于连接状态。可以在 Edge 客户端断开连接期间启动 ThingWorx Platform 文件传输,方法是通过指示 ThingWorx Platform 使用可排队功能执行复制。可排队文件传输将被置于离线队列中,并在代理连接后开始执行。
* 
如果您要使用 PostgreSQL 作为持久化方案提供工具,则离线队列会持续为故障转移提供支持,以实现 ThingWorx 高可用性。
启动传输后,不能断开 Edge 客户端连接,否则传输会失败。如果在“可排队文件传输存在时间 (秒)”配置设置值之前还未开始传输,则排队中的文件传输将会过期。
通常,文件传输由 ThingWorx Platform 控制。但是,如果您想实现 Edge 控制文件传输,可通过将 EdgeControlled 事物形态添加到参与了文件传输的远程事物中进行激活。要实现 Edge 控制文件传输,必须将源或目标设置为 ThingWorx Platform 上的 FileRepository 事物。在 Edge 控制文件传输中,传输是由 Edge 客户端控制的。Edge 客户端会调用 Touch 服务以在传输过程中更新文件传输时间戳。如果 Edge 客户端未更新时间戳,则 ThingWorx Platform 会令文件传输超时。Edge 客户端会指示传输成功或已完成但有错误。
您可以通过在启动文件传输时提供 metadata 参数来嵌入上下文。此字段为 JSON 对象,可以包含任意 JSON。某些基本功能将导致 ThingWorx Platform 使用此字段向 Edge 客户端提供附加说明。对于这些传输,除了 ThingWorx Platform 之外,任何其他过程都不得更改 metadata 字段中的信息。
联合服务器之间的文件传输
要在联合服务器之间传输文件,请执行以下操作:
* 
正斜杠 (/) 是文件信息库的推荐路径分隔符。
1. 在 ThingWorx ServerA 和 ThingWorx ServerB 之间配置联合。有关详细信息,请参阅配置联合
2. 使用 FileRepository 事物模板将 ThingA 添加到 ServerA
a. 选中 ThingA“已发布”复选框,以便其他 ThingWorx 服务器可对其进行访问。
3. 使用 RemoteThingWithFileTransfer 事物模板将 RemoteThingA 添加到 ServerB
a. “标识符”字段中,输入 ThingA@ServerA
4. 将您的文件 (例如,test.txt) 复制到 ServerBSystemRepository 根文件夹。
5. ServerB 上打开 FileTransferSubsystem,然后使用以下参数值执行 copy 服务:
sourceRepo: SystemRepository
sourcePath: /
sourceFile:test.txt
targetRepo:RemoteThingA
targetPath: /
targetFile:test.txt
请勿更改其他参数的默认值。
6. 转至 ServerA 上的 /ThingworxStorage/repository/ThingA 文件夹,并确认此处已成功复制 test.txt 文件。
配置
文件传输设置
数据类型
默认
注解
分配到文件传输池的最小线程数
NUMBER
10
定义 ThreadPoolExecutor 的核心池大小。此线程池用于协调平台控制的文件传输逻辑。
分配到文件传输池的最大线程数
NUMBER
10
用于定义:ThreadPoolExecutor 的最大线程池大小。
如果 ThingWorx 出现故障,异步文件传输可能会丢失。例如,假设此设置默认值为 10,且提交了 50 个长期执行的文件传输。如果 ThingWorx 出现故障,其中 40 个文件将会丢失。
添加新工作线程之前的队列条目最大数目
NUMBER
100
用于定义:ThreadPoolExecutor 中所用队列中条目数的上限。
这会限制一次允许启用的传输数量。
空闲线程超时 (秒)
NUMBER
600000
用于定义:在 ThreadPoolExecutor 中保持空闲线程处于活动状态的时间。池将在指定时间后终止线程,并恢复核心池大小。
文件传输空闲超时 (秒)
NUMBER
30
在文件传输过程 (checksumReadFromBinaryFileWriteToBinaryFilevalidation) 的每个步骤之间,将检查空闲超时。如果步骤用时超过定义的超时时间,则取消传输。
* 
请勿将此参数用于异步复制。
文件传输块大小上限 (字节)
NUMBER
128000
用于定义:为 WriteToBinaryFileReadFromBinaryFile 操作请求的字节数。这表示每次写入的块大小。
此变量规定了系统级别文件传输过程中块大小的上限。
EMS 配置仍优先。但是,如果通过 buffer_size 配置的 EMS 大于此变量中指定的值,则此变量将限制此块大小。如果通过 EMS 配置了较大的块大小 (128 KB),则必须增加此值。最大编译级别是 1 MB。
文件传输大小上限 (字节)
NUMBER
100000000
用于定义:复制操作支持的最大字节数。
如果源文件大于该值,则传输失败并且会显示错误消息。
离线队列允许的文件传输最大数目
NUMBER
50000
用于定义:系统中允许的离线排队文件传输的最大数量。
离线队列中每个事物允许的文件传输最大数目
NUMBER
10
用于定义:每个事物允许的离线排队文件传输的最大数量。
可排队文件传输存在时间 (秒)
NUMBER
86400
用于定义:排队文件传输在离线队列中保留的最长时间。
指定时间过后,文件传输将从离线队列中移除。
整个平台的 Edge 控制文件传输最大数目
NUMBER
500
用于定义:系统中允许的每个事物启用状态的 Edge 控制文件传输的最大数量。
整个平台中并发 Edge 控制传输的总数。这与最大允许 always-on 传输有所不同,后者由“添加新工作线程之前的队列条目最大数目”设置控制。
单个事物的 Edge 控制文件传输最大数目
NUMBER
2
用于定义:允许在 Edge 控制事物中进行的出队或入队最大并发传输数量。例如,值为 2,意味着一个 Edge 控制事物在给定时间内仅能有两个启用的传输 (上传或下载)。在没有足够的容量之前,会拒绝所有对出队文件传输出口的后续请求。
Edge 控制文件传输空闲超时 (秒)
NUMBER
600
用于定义:启用的作业在未成为操作对象的情况下可以维持启用状态的最长时间 (例如,通过数据传输或作业状态更新)。范围是 1-3600 秒。这与 always-on 传输作业的空闲超时很相似,但通常占轮询设备 ping 循环的时间更长。
文件传输清理频率 (秒)
NUMBER
10
定义评估文件传输操作时执行清理任务的频率。
清理任务将从活动作业表格中移除过期作业。此操作可释放文件传输插槽,进而为其他排队的操作腾出槽位。建议的最大最小值必须介于 1 秒和 60 秒之间。
必须合理设定此设置的值。默认值 10 秒适用于大多数用例。
值如果过小,则会频繁启动后台任务。此操作将从缓存获取所有当前活动的文件传输作业,并评估其到期时间。但这也会向缓存添加不必要的计算和加载。
值如果过大,则启动此任务的频率较低,进而导致文件传输阻塞并占据有效的保留槽位,且这些槽位可能无法及时释放。如果存在过多的阻塞操作,例如网络不稳定、设备未连接等,则可能影响所有文件传输操作。
这对您有帮助吗?