2012-04-25 20 views
6

Obecnie tworzę grę w szachy online dla wielu graczy. Zastanawiałem się, czy właściwe byłoby uruchamianie przez użytkownika logów do każdego ruchu.Mysql: kiedy używać wyzwalaczy

Następnie, używając nodejs, wielokrotnie sprawdzałem tabelę wyzwalaczy i aktualizowałem wizualizację dla obu graczy: & obserwatorów.

Ponieważ muszę tylko dokonać zmian w bazie danych, aspekt wizualny będzie następował automatycznie (za pomocą funkcji powtarzania w celu sprawdzenia zmienionych danych w bazie danych). Celem tego będzie oddzielenie wizualizacji od logiki związanej z tworzeniem gry.

Czy ktokolwiek z was mógłby polecić tę technikę lub po prostu nie iść?

Odpowiedz

6

Opisujesz możliwe rozwiązanie techniczne do swojego zadania. Ale zdecydowanie NIE polecam.

To nie będzie bardzo dobrze skalowalne - zwiększa obciążenie i obciążenie zarówno bazy danych, jak i serwera aplikacji.

Istnieją inne możliwości lekkie ta skala znacznie lepiej:

  • użycie wiadomość kolejka jak (na przykład) redis z klientem node_redis. Ma wbudowaną semantykę pubsub.
  • streszczenie połączeń z bazami danych i wypchnij wszystkie aktualizacje bazy danych również do kolejki komunikatów.
  • Zamiast korzystać z funkcji "cyklicznej" (ankieta AJAX), aby uzyskać aktualizacje statusu, można użyć na przykład streamera HTTP, takiego jak jquery-stream lub jquery-socket. Zapobiega to narzutowi otwierania nowego połączenia HTTP dla każdej aktualizacji klienta.
  • użyj funkcji sterowanych zdarzeniami nodejs po stronie serwera, aby przekazać nowe zdarzenia do połączenia klienta.
+0

Zapomniałem wspomnieć, że używam teraz JS (biblioteka gniazd). Dzięki temu jedyną pula może być serwerem robiącym to dwa razy na sekundę w celu sprawdzenia aktualizacji. Po znalezieniu aktualizacji zostanie ona przekazana wszystkim użytkownikom za pośrednictwem żądania gniazda. Nawet jeśli w końcu istnieje tysiąc użytkowników, baza danych będzie nadal łączona w tym samym tempie, tylko przez serwer. Czy miałoby to wpływ na Twoje rekomendacje? Dzięki za pomoc. – Louis

+0

@Louis nadal będzie (do uniknięcia) obciążenie serwera bazy danych i systemu plików. – Kaii

+0

Jakie rozwiązanie poleciłbyś komuś, kto nie używa Node.js, ale raczej PHP? –

Powiązane problemy