0

인터넷 연결 상태가 좋지 않아 삽입 된 데이터를 입력 상자에서 클라우드 서버로 처리하는 우아한 방법이 있습니까? 사용자의 위치가 수 주/개월 동안 인터넷 연결 상태가 좋지 않을 수 있습니다. 여러 개의 클라이언트가 지속적으로 (1 ~ 2 초마다) 입력 상자에 데이터를 입력하고 항목을 놓칠 수없는 Rails 웹 응용 프로그램을 만들고 있습니다. 모든 항목이 입력 된 순서대로 클라우드에 삽입되는 것이 중요합니다. 각 입력 후에 입력 상자를 클라우드 데이터베이스 (AWS RDS/Amazon DynamoDB)에 직접 삽입하는 대신 데이터가 로컬 테이블에 삽입되고 별도의 작업이 데이터를 클라우드에 삽입하고 계속 진행할 것이라고 생각합니다. 모든 데이터가 삽입 될 때까지 다시 시도하십시오. 여기에 내가 생각하고 무엇을 -인터넷 연결 상태가 좋지 않아 삽입 된 데이터를 클라우드 서버로 처리하는 방법은 무엇입니까?

handle failed input data

내가 해결책을 찾고있다 그리고 이것은 내가 본 가장 가까운 - https://github.com/chanks/que 사자 아 모범 사례에 대한 지침을 찾고 또는 이미 구현 및 테스트 솔루션 (바퀴를 다시 발명하고 싶지는 않음). 미리 감사 드리며 도움을 주셔서 감사합니다!

답변

1

이러한 상황의 경우 응용 프로그램을 오프라인 응용 프로그램 웹 응용 프로그램 으로 디자인하십시오. 그러면

  • 입력시 타임 스탬프로 오프라인 저장소에 쓸 수 있습니다.
  • 코드의 또 다른 부분은 네트워크 가용성을 주기적으로보고 백엔드 서비스와 데이터를 동기화합니다.

AWS에서 동기화를위한 고유 한 핵심 로직을 구현하는 대신 AWS Cognito Sync 스토리지를 사용할 수 있습니다.

  • AWS SDK for Cognito을 사용하여 자바 스크립트 코드를 작성하여 Local Cognito Storage에 글을 쓸 수 있습니다. 여기에서 각 사용자는 고유 한 저장소를 갖게됩니다.
  • SDK는 네트워크 가용성이있을 때이를 유지하고 백엔드 서비스와 동기화해야합니다.
  • 백엔드에서는 공유 작업을 위해 DynamoDB와 같은 저장소에 데이터를 저장하기 위해 람다 함수를 트리거 할 수 있습니다.

참고 : (예를 들어, 1000>) 초당 입력 매우 많은 수를 기대하고 일괄 적으로 입력에 대한 작업을 할 계획이라면, 당신은 AWS Kineses Streams에 백엔드 서비스에서받은 변경 내용을 스트리밍 할 수 있습니다.

또한 파우치 DB 서버와 데이터를 동기화 할 수있는 JS 저장 구성 요소가있는 Pouch DB for Offline First Web Applications을 사용하는 등의 다른 옵션이 있습니다.

+0

사용자가 실제로 1-2 초마다 수동으로 입력하지 않는다고 생각합니다. 브라우저를 사용하지 않는 일종의 마이크로 컨트롤러라고 생각합니다. 그렇지 않으면 그것의 좋은 생각 밖의 대답. – max

+0

@max - 당신이 맞았습니다. 실제 "사용자"는 아니지만 마이크로 컨트롤러의 한 형태이며 바코드 스캐너가 정확해야합니다. 바코드가 첫 번째 스캐닝 스테이션 "User 1"에 도달하고 바코드를 입력 필드로 스캔합니다. 방송국이있는 컴퓨터가 열리고 브라우저는 해당 방송국의 입력 필드에 자동 초점을 맞 춥니 다. Ashan 추천 파우치 DB는 해결책이 될 수 있으며 이전에 추가 한 다이어그램의 간단한 접근 방식이 실현 가능하지 않다면 필자가 살펴볼 필요가있는 부분입니다. Ruby on Rails에 대한 더 간단한 접근법이 있습니까? – Ayu

관련 문제