2016-07-16 25 views
1

Ich versuche ein Online-Brettspiel mit Play Framework zu erstellen. Dies ist meine erste solche Anwendung. Es ist wichtig, eine gute Reaktionszeit für die Endbenutzer zu haben. Stellen wir uns ein Spiel wie Monopol vor, wo mehrere Benutzer das Spiel spielen, verschiedene Standorte kaufen, Häuser oder Hotels am Standort usw. bauen. Jede Runde, die der Benutzer spielt, gibt es einige Änderungen im Aussehen des Boards, die für diesen Benutzer spezifisch sind. Wenn das Board zum Beispiel 40 Standorte hat, wenn der Benutzer1 den Standort1 kauft, sollte das Board in seinem nächsten Zug so aussehen, dass der Standort1 von ihm gekauft wurde. Die Ansicht des Spielplans unterscheidet sich von den verschiedenen Benutzern, da sie das Spiel je nach Art des Zuges spielen.Hier können Sie benutzerspezifische Online-Spieldaten speichern

Also die Frage ist, wo ich die benutzerspezifischen Daten speichern, wie das Spiel voranschreitet, ohne die Antwortzeit für jedes Mal, Retrieval der Board-Daten zu beeinflussen? Wenn es Cache ist, was kann dann akzeptables Datenlimit sein, das für jeden Benutzer im Cache abgelegt werden kann?

Danke

Antwort

0

Die Lösung hängt sehr von Ihrer Umgebung ab. Für das Caching müssen Sie die Strategie und Implementierung angeben.

Wenn Ihre Webanwendung nur auf einem Server läuft, ist Ihre Aufgabe einfach. Sie können den Zwischenspeicher verwenden und mit .Net Cache (wenn Sie .Net verwenden) oder Memcache implementieren, die in den meisten Frameworks verwendet werden können. Wenn Sie jedoch mehr als einen Server für die Freigabe und den Zugriff auf die Cache-Daten benötigen, müssen Sie einen prozessexternen Cache verwenden, für den Sie den Memcache oder andere Cache-Provider verwenden können, die Ihnen Zugriff auf den Speichercache ermöglichen Anwendung.

Sie speichern das Modell des Spiels im Cache und aktualisieren es, wenn ein Spieler es ändert. Bei diesem Ansatz können Sie jederzeit den Status des Modells behalten und aus dem Cache lesen.

Seien Sie vorsichtig, wenn Ihre Anwendung abhängig vom Cache ist, kann es riskant sein, denn wenn der Cache nicht verfügbar ist, ist das ganze Spiel verloren. Versuchen Sie, das Modell in der Datenbank zu behalten. Sie können die Daten des Spiels in der Datenbank behalten, aber nach einer bestimmten Anzahl von Aktionen aktualisieren und nicht mit jeder einzelnen Aktion.

Sie können auch No-Sql-Datenbanken verwenden, die viel schneller sind als SQL-Datenbanken (nicht schneller als In-Memory-Cache) und im Vergleich zu Caches sehr persistent sind. Sie können Ihre Live-Spieldaten in No-SQL-Datenbanken speichern und andere Daten in SQL-Datenbanken speichern. So können Sie eine Mischlösung haben.

+0

Vielen Dank. Das ist sehr hilfreich. –