資料排序
|
|
從 ThingWorx 9.7 開始,可使用資料排序。
|
透過在欄位中從裝置串流資料,事件與訂閱可用於企業邏輯、資料處理等。透過訂閱處理的資料會擷取到支援的資料庫。ThingWorx 中的資料處理會同時執行,以支援許多物件與相關聯的內容值。
當將資料串流傳送到 ThingWorx 並透過事件與訂閱處理時,針對內容上的事件進行連續處理時,預期會使用已排序資料。已處理的資料也應以連續順序在資料庫中擷取。
問題陳述
如果遺失資料順序,會影響事件產生、訂閱,以及最終的資料擷取。在高可用性設定 (存在用來平衡 WebSocket 連線的「連線伺服器」) 中,在 Kepware 中斷連線與重新連線期間,可以發現此情況。「單一」伺服器與「高可用性」設定部署支援「資料排序」。
解決方案
資料排序有助於實現以下目標:
• 針對「連線伺服器」,維持特定物件與 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 及更新版本
優點
資料排序具有下列優點:
• 依序處理資料,以允許進行可靠的資料儲存與處理。
• 使客戶能夠在高輸送量平行處理與序列化和依序資料處理之間進行選擇。
• 使 ThingWorx 解決方案能夠從 Kepware 擷取資料,以依序接收及處理資料。