Domanda

dire Let Ho un'applicazione che è garantito per sopraffare un server anche dopo ottimizzazioni. Esiste una tecnologia che permette un'applicazione web per essere suddiviso su più server, pur mantenendo il suo stato?

Prendiamo ad esempio un multiplo gioco online giocatore. Di solito nel mondo di guerra artigianale ci sono più server con ciascuno con il proprio stato di gioco. Quello che sto cercando è qualcosa che permettesse questo stato gioco per essere condivisa tra più server.

EDIT: la piattaforma non ha molta importanza in quanto si tratta di un'applicazione web quindi il back-end non importa molto. Tuttavia, Rails e Java sono possibilità.

Inoltre, WoW era solo un esempio, io sono solo interessato a tale tecnologia a; un grande gioco sarebbe una buona applicazione per esso.

È stato utile?

Soluzione

non c'è davvero niente per bassa latenza, alta di throughput applicazioni nella memoria come i giochi on-line in tempo reale, almeno non come un pezzo di middleware arbitrario.

Progetto Darkstar fatto un tentativo ammirevole in questa sul lato usabilità e la complessità, ma ha trovato (com'era prevedibile) che non è stato ridimensionamento.

In definitiva si tratta di un difficile (anche se non intrattabile) problema in cui non esiste una soluzione che è vicino ad essere universalmente applicabile. In particolare si sono suscettibili di avere un compromesso, tra la necessità di agire sui dati di gioco non aggiornati da un lato, contro la necessità di scambiare costantemente i dati condivisi dall'altro lato. La mancanza di correttezza vs. crescita esponenziale della complessità ... scegli il tuo veleno.

E 'degno di nota - soprattutto se il vostro dominio di applicazione non è giochi in tempo reale - che spesso non dispiace se si sta lavorando con dati non aggiornati, finché diventa corretto abbastanza presto. In questi casi semplici sistemi di caching come memcache sono grandi. Allo stesso modo, se avete bisogno di più correttezza, ma non devi preoccuparti di rendimento così tanto, qualcosa di simile a Hazelcast (detto in un'altra risposta) può essere grande, ma per la maggior parte dei giochi online che sono abbastanza grandi da richiedere bilanciamento "migliaia di operazioni di carico / sec" non è solo abbastanza buono.

Alcuni tecnologia MMO fa qualche tentativo di distribuire l'applicazione per il partizionamento è geograficamente, il che significa che non c'è davvero molto in comune dello stato a tutti, e che richiede questo schema di dare un senso nel mondo di gioco e la finzione.

Un altro approccio è quello di dividerlo dal servizio, e realizzare la maggior parte dei servizi con il tuo approccio preferito RPC off-the-shelf. Questo consente di scalare facilmente, se i vostri servizi sono indipendenti, ma tutte le dipendenze tra i servizi ti mette a destra indietro di una casella.

Altri suggerimenti

Dai un'occhiata alla Hazelcast . E 'open source, piattaforma di distribuzione dei dati altamente scalabile per Java. offerte Hazelcast distribuiti mappa, che saranno ripartiti tra i membri del cluster. si può facilmente memorizzare i dati in esso. E 'super super facile da usare. Basta aggiungere hazelcast.jar al classpath. Non c'è bisogno di installare alcun server.

Microsoft HPC , non per i giochi però. Abbastanza facile da configurare e utilizzare.

Non si parla la vostra piattaforma. Per Java c'è terracotta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top