2012-04-25 7 views
6

현재 온라인 멀티 플레이어 체스 게임을 만들고 있습니다. 모든 동작에 로그인하는 것이 사용자 트리거에 적절한 지 궁금합니다.Mysql : 트리거를 사용하는 경우

그런 다음 nodejs를 사용하여 반복적으로 트리거 테이블을 확인하고 두 플레이어의 시각을 업데이트합니다 & 관찰자.

데이터베이스에서 변경해야하기 때문에 시각적 측면은 자동으로 후속 작업을 수행합니다 (되풀이 기능을 사용하여 데이터베이스의 변경된 데이터를 확인). 이 목표는 게임을 만들기 위해 관련된 논리에서 영상을 분리하는 것입니다.

이 기술을 권장 하시겠습니까? 아니요?

답변

6

작업에 가능한 기술적 솔루션을 설명합니다. 하지만 그렇게하지 않는 것이 좋습니다.

이렇게하면 확장되지 않아 데이터베이스와 응용 프로그램 서버에 많은 오버 헤드와로드가 추가됩니다.

훨씬 더 확장 다른 경량 가능성이 있습니다

  • 사용 node_redis 클라이언트와 (예를 들어) redis 같은 메시지 큐. 내장 된 의미는 pubsub입니다.
  • 데이터베이스 호출을 추상화하고 모든 데이터베이스 업데이트를 메시지 큐에 푸시합니다.
  • 상태 업데이트를 얻기 위해 "반복"기능 (AJAX 폴링) 대신에 jquery-stream 또는 jquery-socket과 같은 HTTP 스 트리머를 사용할 수 있습니다. 이렇게하면 각 클라이언트 업데이트에 대해 새 HTTP 연결을 여는 오버 헤드가 방지됩니다.
  • 서버 측에서 nodejs의 이벤트 구동 기능을 사용하여 새 이벤트를 클라이언트 연결로 푸시합니다.
+0

나는 nowJS (소켓 라이브러리)를 사용하고 있다는 것을 잊지 않습니다. 이를 사용하면 업데이트를 확인하기 위해 초당 두 번 서버가 수행하는 풀만 발생합니다. 업데이트가 발견되면 소켓 요청을 통해 모든 사용자에게 푸시됩니다. 수천 명의 사용자가 있더라도 데이터베이스는 여전히 서버에 의해서만 동일한 비율로 풀링됩니다. 이것이 귀하의 권장 사항에 영향을 미칩니 까? 도와 주셔서 감사합니다. – Louis

+0

@ 루이스 당신은 여전히 ​​데이터베이스 서버와 파일 시스템에 (피할 수없는) 부하를가집니다. – Kaii

+0

Node.js가 아닌 PHP를 사용하는 사람에게 어떤 솔루션을 권하고 싶습니까? –

관련 문제