2010-12-02 4 views
4

여러 사용자가 동시에 개체 집합을 만들고보고 수정해야하는 시스템을 구축하고 있습니다.자바 서버와 브라우저 클라이언트 간의 낙관적 인 객체 복제 솔루션?

  • 시스템은 Java 서버와 최신 브라우저 클라이언트에서 실행되도록 계획되어 있습니다 (어느 것을 선택해야합니까).
  • 네트워크 및 서버 중단에도 견고해야하며, 사용자 인터페이스는 수정을 차단하면 안되며, 연결이 복원 될 때 수정 사항을 로컬에 저장하고 게시해야합니다.
  • 정상적인 작동에서는 1 초 미만의 대기 시간으로 복제해야합니다.
  • 네트워크 대기 시간 및 대역폭, CPU 리소스가 큰 문제는 아니지만 규모는 수십에서 수백 개의 클라이언트까지입니다.
  • 오브젝트는 원자 값의 구조 및 구조 세트 (즉, 트리)로 간주 될 수 있습니다. 그것은 개체 사이의 참조가 불필요한 것 같습니다.
  • 특성 수준의 최종 쓰기 충돌 해결에 만족하며 스냅 샷 일관성을위한 특정 요구 사항이 없습니다. 하지만 UI를 통해 쓰기 충돌을보고하고 싶습니다.
  • 처음에는 서버와 여러 클라이언트 간의 복제 문제를 해결하려고합니다. 미래에는 아마도 다중 레벨 트리가 필요할 것입니다. 임의의 복제 구조는 필요하지 않지만 장애 조치 또는 다중 마스터를 쉽게 만듭니다.

내가 문제가되는 문제는 시스템 간의 개체에 대한 변경 내용을 복제하는 것입니다. 분산 동시성은 어렵습니다. 나는 그 복잡성을 그가 무엇을하는지 아는 누군가에게 위임하고 싶습니다. 복제 부분에 도움이되는 라이브러리/프레임 워크는 무엇입니까?

나는 이미 XSTM을 찾았으며 그 임무는 거의 필요한 것 같지만, 불행하게도 GWT 부분은 아직 준비가되어 있지 않은 것으로 보이고 프로젝트는 불확실한 미래가있는 것으로 보인다.

정말 유용한 것이 없다면 어떤 알고리즘이 좋을지에 대한 아이디어를 찾고 있습니까?

저는 현재 DVCS 및 작동 변환에서 영감을 얻은 것으로 생각하고 있습니다. 서버는 오브젝트에 대한 변경 세트를 승인하고 충돌하는 쓰기를 거부합니다. 클라이언트는 마지막으로 알려진 서버 상태를 추적하고 로컬로 변경하고 게시 된 변경 사항과 로컬 변경 사항 간의 충돌을 감지하고 수신 된 서버 상태를 기반으로 변경되지 않은 로컬 변경 사항을 리베이스합니다.

답변

0

일부 분산 데이터베이스는 Cassandra 옵션이 있습니까? 적어도 3 개의 노드가 실행 중일 때 필요와 필요 이상을 제공합니다.

관련 문제