데이터 순서 지정
|
데이터 순서 지정은 ThingWorx 9.6의 베타 기능이며 향후 릴리즈에서 정식 버전으로 제공됩니다.
|
필드의 장치에서 스트리밍 데이터를 사용하면 비즈니스 로직, 데이터 처리 등에 대한 이벤트 및 구독이 적용됩니다. 구독을 통해 처리된 데이터는 지원되는 데이터베이스에 수집됩니다. ThingWorx의 데이터 처리는 많은 사물 및 연관된 속성 값을 지원하기 위해 병렬로 실행됩니다.
데이터가 ThingWorx로 스트리밍되고 이벤트 및 구독을 통해 처리되는 동안 속성에 대한 이벤트를 순차적으로 처리하려면 순서 지정된 데이터가 필요합니다. 처리된 데이터도 데이터베이스에서 순차적으로 수집해야 합니다.
문제 설명
데이터 순서가 누락되면 이벤트 생성, 구독 및 궁극적으로 데이터 수집에 영향을 미칩니다. 이 시나리오는 고가용성 설정에서 Kepware의 연결을 끊었다가 다시 연결하는 동안 관찰됩니다(WebSocket 연결의 균형을 맞추기 위한 Connection Server가 있는 경우).
솔루션
ThingWorx 9.6에는 다음과 같은 변경 사항이 도입되었습니다.
1. Connection Server의 경우 특정 사물에 대한 연결 상태를 ThingWorx ID 및 WebSocket(WS) 채널 ID 쌍으로 유지합니다. 이렇게 하면 특정 사물에 대한 속성 값 업데이트가 항상 특정 ThingWorx 및 특정 WebSocket 채널로 전송됩니다.
2. eMessage Connector(eMC)는 내부적으로 Connection Server를 사용하여 ThingWorx Platform과 통신합니다. Connection Server에 대한 변경 사항은 eMessage Connector(eMC)가 순서 지정된 데이터를 ThingWorx로 전송하는 데 도움이 됩니다.
3. ThingWorx Platform에서 사물별로 Akka 작업자를 구현합니다. 사물에 대한 각 수신 속성 값을 사용하면 작업자가 생성되고 속성 값이 작업자의 사서함으로 푸시됩니다. 그런 다음 Akka 작업자가 대기열에서 메시지를 가져와 순차적으로 처리하여 플랫폼 측에서 순서 지정된 데이터 처리를 보장합니다.
4. platform-settings.json의 BasicSettings에서 데이터 순서 지정을 사용하도록 새 플래그가 표시됩니다.
설정 | 유형 | 값 | 기본값 |
---|
EnableDataOrdering | BOOLEAN | true 또는 false | false |
| 이벤트 순서 지정은 9.5에서 제공되고 사용 가능한 기능입니다. 구독 정의에서 이 구성을 활성화하려면 Execute Events Sequentially를 클릭합니다. |
기타 구성 요소 영향
• Java 및 C SDK는 다음 API를 사용하여 ThingWorx에 속성 값을 보낼 수 있습니다.
VirtualThing.setProperty()
VirtualThing.updateSubscribedProperties();
이전 API를 사용하면 속성이 ThingWorx Platform에 순차적으로 전송됩니다.
• 데이터 순서 지정을 수행하려면 Connection Server가 부하 분산 뒤에 있는 경우 부하 분산 구성을 조정하여 연결 상태를 유지합니다. 이 데이터가 없으면 순서 지정을 수행할 수 없습니다.