内存队列
在单一服务器或高可用性模式下使用 ThingWorx 时,从 Edge 接收的数据由内存队列进行内部处理。从 Edge 接收到数据后,对其进行分类并传输到相应的内存队列,然后再传输到 ThingWorx 数据库存储。
ThingWorx 的 Java 虚拟机 (JVM) 中包含以下内存队列:
队列
说明
Ingestion Queue
处理入站数据。
WebSocket Message Queue
处理 always-on 交互。
Event Queue
处理订阅处理。
Persistent Properties Queue
将持久化属性批量写入数据库。
Logged Properties Queue
将已记录属性批量写入后端数据库 (关系数据库或时序数据库)。
下图显示了内存队列到 ThingWorx 数据库的工作流:
显示内存队列到 ThingWorx 数据库的工作流
内存队列为 ThingWorx 服务器从 Edge 接收的主题有效负载提供非持久化最多一次 (AMO) 执行保证。如果服务器变得无响应或崩溃,则队列中的数据可能会丢失。这些队列不具备容错能力,因此任何系统故障都会导致内存中的当前数据丢失。
内存队列主要用作临时缓冲区,以处理短时间的突发流量。与提供更高持久性的基于磁盘的解决方案不同,这些队列受到可用内存的限制。意外数据激增或处理瓶颈可能导致队列溢出和数据丢失。为了防止数据丢失并提高内部消息传递的可靠性,Apache Kafka 将主题队列传输到基于磁盘的持久化存储。有关详情,请参阅持久化队列
内存队列用于处理事件以及持久化属性和已记录属性。发生属性写入时,系统会将数据放入内存队列。然后,调用已配置的持久化工具,将数据刷新到数据库存储中。所有属性写入操作均通过内存队列处理至持久化工具。
这对您有帮助吗?