저희 회사에서 판매하는 시스템은 다중 기계 솔루션 용 소프트웨어입니다. 경우에 따라 시스템 중 하나에는 UI가 있고 다른 시스템에는 백엔드/API가 있습니다. 이러한 시스템은 다양한 작동 및 저장 값을 위해 자체 시계를 사용하고 통신합니다.한 컴퓨터의 웹 서버 UI가 다른 서버의 백엔드/API와 동기화되지 않게하려면 어떻게해야합니까?
UI의 시스템 시계가 백엔드보다 30 초 이상 앞서면 UI의 타임 스탬프가 주요 정보로 REST 요청으로 보내지기 때문에 쿼리가 잘못 수행되기 시작합니다. 30 초마다 발생하는 "나에 의해 업데이트 된 것"쿼리가 있으며, 데시크는 업데이트 된 데이터가 타이밍 창 외부에 있기 때문에 누락 될 수 있습니다.
내 소프트웨어가 설치된 시스템을 제어 할 수 없기 때문에 코드면에서 해결책이 필요합니다. 고객이 시계를 동기화하도록 강요 할 수는 없습니다.
가능한 솔루션은 나는 생각했다 :
- UI는이 시스템 시간에 대한 백엔드를 조회하고 캐시 할 수 있습니다.
- 백엔드/API는 업데이트를 찾을 때 더 늦게 도달 할 수 있습니다. 이렇게하면 시계가 잠글 수있는 공간이 생기지 만 대량의 데이터가있는 시스템에서는 훨씬 더 무거운 쿼리로드가 발생합니다.
아이디어가 있으십니까?
....이 영역에서 많은 시간을 소비하지 않고 로그인 (또는 이와 동등한) 시간에 서버 시간을 캐시해야하지만 더 큰 질문은 "매 30 초마다?"입니다. 자동 저장 장치와 같은 작업을 수행하는 경우 "30 초 또는 처음으로 변경 사항이 발생합니다. 둘 중 빠른 날짜가됩니다."가되어야합니다. 그러나 일반적으로 말하자면 UI 클록을 무의미하게 만들려고 시도해야합니다 ("클라이언트를 신뢰하지 마십시오"의 일부 - _future_ 타임 스탬프가 제공되면 어떻게됩니까?). 그렇지 않으면이 시스템이 어떻게 상호 작용하는지에 대해 더 자세한 정보가 필요하다고 생각합니다. –
@ Clockwork-Muse - 나는이 분야에서 매우 새로운 사람이지만, 클라이언트가 변경 한 사항은 "이 항목의 소유자 변경"또는 "상태 변경"과 같은 이벤트입니다.자동 저장 안함. 웹 UI는 1-50 명이 동시에 사용하도록 설계되었으므로 30 초간의 업데이트가 중요한 이유입니다. 그러나 30 초는 경주 조건을 보호하지 않을 것입니다 ... 그것은 현재 상태에서 "동기를 유지하기 위해 최선을 다하겠습니다"접근 방식입니다. – Shadoninja
사실 내가 주변을 둘러보고 사람들에게 더 이야기하면 NTP 서버로 구성된 기계 네트워크가 모든 sysadmin에 의해 예상되는 것처럼 보입니다. 나는이 주제에 대한 나의 걱정이 조금 과장된 것이라고 생각한다. 나는 사람들이 무엇을 말해야하는지보기 위해 하루나 이틀 동안 질문을 떠날 것이고, 나는 그것을 닫을 것이다. – Shadoninja