2017-01-24 4 views
2

나는 값과 타임 스탬프라는 두 개의 매개 변수를 가진 패킷을 수신하는 IoT 게이트 제어 시스템을 구현 중이다. 모든 메시지는 메시지 브로커 시스템으로 인해 엄격한 시간 순서대로 내 시스템에서 수신되고 처리됩니다.IoT 타임 스탬프 기반 알고리즘의 이론적 모델

내 프로그램은 "최상의 정보"계획에 따라 몇 가지 규칙에 따라 메시지를 처리 ​​한 다음 타이머가 소개 할 수있는 실수를 수정해야합니다. 목표는 네트워크 지연이 발생할 수있는 방식으로 게이트가 열리거나 닫히는 정확한 시간을 기록하는 것입니다. 타이머의 목적은 실제 결과를 실제로 알기 전에 작업자에게 결과를 예측하고 타이머가 정확하다는 것입니다. 예를 들어, 다음 시퀀스 occour :

소인 왼쪽 칼럼되고, 값은 오른쪽

  1. 받았다 MESSAGE

    2017년 1월 24일 10시 0분 0초 인 - TRUE (1) 30 (configurabl 후 -

  2. TIMER

    2017년 1월 24일 10시 0분 30초 (이 게이트가 개방 수단, 로그 파일은 게이트가이 타임 스탬프 개방되었음을 기록) e 상수 값) 초 타이머가 게이트를 닫아야한다는 것을 나타냅니다. 이것은 프로그램이 2017-01-24 10:00:00 - 2017-01-24 10:00:30 사이에 게이트를 30 초 동안 열어 기록하도록 트리거합니다.

  3. 받았다 용 MESSAGE

    2017년 1월 24일 10시 0분 15초 - FALSE (0) (이것은 실제로 10시 0분 15초 폐쇄 된 게이트,이 프로그램을 조정해야한다는 것을 의미한다는 것을 의미 로그가 너무 개방의 항목이 2017년 1월 24일 10시 0분 0초이었다 -. 2017년 1월 24일 10시 0분 15초

또 다른 문제는, 예를 들어도 그 고급의 경우, 예를 들어 : 10 초 동안 단단한 TRUE 신호가있을 경우에만 게이트를 열어서 로깅해야합니다. 즉, 실제 신호가 나타나면 먼저 th를 말하는 로그에 항목이 기록됩니다 게이트에서 열리는 작업자가 나타나면 두 번째로 타이머가 시작되어 10으로 계산됩니다. 타이머가 10 초에 도달하면 시스템에서 게이트가 열렸다고 기록합니다. 10 초. 그러나 5 분 후 (예를 들어 네트워크 고장으로 인해) 시스템은 TRUE 신호가 나타난 후 5 초 후에 게이트가 실제로 FALSE 신호를 수신했다는 메시지를 수신합니다. 이는 OPEN 항목이 전혀 쓰여지지 않아야한다는 것을 의미합니다 TRUE 신호와 FALSE 신호 사이에 5 초). 이 두 메시지 간에는 다른 메시지가 전송되지 않았으므로 시간 순서대로 엄격하게 처리됩니다. 여기에 항상 중요한 요소가 있습니다.

"최상의 정보"오류로 인해 시간 이벤트 및 롤백을 처리 할 때 이러한 유형의 문제에 대한 다른 알고리즘, 패턴 및 이론적 모델이있을 것이라 확신합니다. 그러나 나는 그들이 무엇을 부르고 어디에서 찾을 수 있는지 모르겠다. 문제의 유형에 대한 견고한 모델을 가지기 위해 관련 이론, 예, 그리고 무엇을 찾아 볼 것인가? 많은 규칙들 (게이트는 펄스 조합과 상태를 결정하기 위해 결합이 사용되는 진실/거짓을 보낼 수 있기 때문에) 구현은 매우 쉽게 if 문과 함께 유지되고 유지 보수가 불가능하며, 확장 및 지원.

답변

1

이벤트 소싱이 여기에있는 것처럼 보입니다. 시스템의 신뢰할 수있는 상태를 저장하는 대신 이벤트를 저장하고 상태를 캐시합니다. 기록을 다시 써야 할 경우 변경된 시간부터 이벤트를 재생하십시오.나는 이벤트 소싱에 관해 작성된 많은 기사를 여기에서 재현하려고하지 않을 것이다.

+0

답변 해 주셔서 감사합니다. 이것이 제가 찾고 있던 것입니다. 이런 유형의 사례에 가까운 예나 기사를 알고 계십니까? 내가 본 이벤트 소싱 기사는 매우 일반적입니다. –

+0

@ Erik888 아니야, 미안. –