数据排序
|
|
从 ThingWorx 9.7 开始,可使用数据排序。
|
有了字段中源自设备的流数据后,事件和订阅可用于业务逻辑和数据处理等。通过订阅处理的数据会被引入受支持的数据库。ThingWorx 中的数据处理可并行执行,以支持多个事物和关联的属性值。
当数据流入 ThingWorx 并通过事件和订阅予以处理时,对属性相关事件进行顺序处理时需具备有序数据。经处理的数据也应按顺序引入数据库。
问题说明
如果数据顺序被打乱,则会影响事件生成、订阅和最终的数据引入。Kepware 在高可用性设置 (存在用于平衡 WebSocket 连接的连接服务器) 中断开连接和重新连接期间会出现此情况。单一服务器和高可用性设置部署中支持数据排序。
解决方案
数据排序有助于实现以下目的:
• 对于连接服务器,保持特定事物与 ThingWorx ID 和 WebSocket (WS) 通道 ID 对的粘性。这可确保特定事物的属性值更新始终发送至特定的 ThingWorx 和特定的 WebSocket 通道。
• eMessage Connector (eMC) 内部使用连接服务器与 ThingWorx Platform 进行通信。连接服务器的更改有助于 eMessage Connector (eMC) 向 ThingWorx 发送有序数据。
• 在 ThingWorx Platform 中,针对每个事物实施 Akka Actor。通过事物的每个传入属性值创建一个 Actor,并将属性值推送至 Actor 的邮箱。Akka Actor 随后会从队列中提取消息并按顺序对其进行处理,从而确保在平台端进行有序的数据处理。
• 要在 platform-settings.json 的 BasicSettings 中启用数据排序,可以使用以下设置。
设置 | 类型 | 值 | 默认值 |
|---|
EnableDataOrdering | BOOLEAN | true 或 false | false |
• /Metrics 端点的 thingworx_WSExecutionProcessingSubsystem_isDataOrderingEnabled 指标可用于监控数据排序设置:
指标名称 | 类型 | 示例 |
|---|
thingworx_WSExecutionProcessingSubsystem_isDataOrderingEnabled | 仪表 | # HELP thingworx_WSExecutionProcessingSubsystem_isDataOrderingEnabled Data ordering enabled # TYPE thingworx_WSExecutionProcessingSubsystem_isDataOrderingEnabled gauge thingworx_WSExecutionProcessingSubsystem_isDataOrderingEnabled{prefix="Platform.Core.Subsystems",category="WSExecutionProcessingSubsystem",platformid=""} 0.0 |
| 事件排序是 9.5 中提供的一项功能。要在订阅定义中打开此配置,请单击 Execute Events Sequentially。 |
其他组件影响
• Java 和 C SDK 可使用以下 API 向 ThingWorx 发送属性值:
VirtualThing.setProperty()
VirtualThing.updateSubscribedProperties();
使用先前的 API,依次向 ThingWorx Platform 发送属性。
• 为实现数据排序,如果连接服务器位于负载均衡器之后,请调整负载均衡器配置以使其具有粘性。没有这些数据,就无法实现排序。
• 以下组件中进行了数据排序修复:
◦ Connection Server 9.3.0 及更高版本
◦ eMessage Connector 2.5.0 及更高版本
◦ Kepware 6.16 及更高版本
优点
数据排序具有以下优点:
• 按顺序处理数据,实现可靠的数据存储和处理。
• 使客户能够在高吞吐量并行处理与序列化和有序数据处理之间进行选择。
• 使从 Kepware 接入数据的 ThingWorx 解决方案按顺序接收和处理数据。