Domanda

Per un sito web come reddit con molti voti su / giù e molti commenti per argomento, con cosa dovrei andare?

Lighttpd / Php o Lighttpd / CherryPy / Genshi / SQLAlchemy?

e per il database cosa migliorerebbe / sarebbe più veloce MySQL (4.1 o 5?) o PostgreSQL?

È stato utile?

Soluzione

Non posso parlare alla domanda MySQL / PostgreSQL poiché ho un'esperienza limitata con Postgres, ma il mio progetto di ricerca Masters riguardava siti Web ad alte prestazioni con CherryPy, e non credo che rimarrete delusi se si utilizza CherryPy per il tuo sito. Può facilmente adattarsi a migliaia di utenti simultanei sull'hardware delle materie prime.

Naturalmente, lo stesso si potrebbe dire per PHP, e non conosco alcun benchmark ragionevole che paragona le prestazioni di PHP e CherryPy. Ma se ti chiedevi se CherryPy è in grado di gestire un sito ad alto traffico con un numero enorme di richieste al secondo, la risposta è sicuramente sì.

Altri suggerimenti

L'impostazione ideale sarebbe vicina a questo :

caching

In breve, nginx è un server web / front-proxy veloce e leggero con un modulo unico che consente recupera i dati direttamente dall'archivio RAM memcached , senza colpire il disco o alcuna webapp dinamica. Naturalmente, se l'URL della richiesta non era già memorizzato nella cache (o se è scaduto), la richiesta procede alla webapp come al solito. La parte geniale è che quando la webapp ha generato la risposta, una sua copia va in memcached, pronta per essere riutilizzata.

Tutto ciò è perfettamente applicabile non solo alle pagine Web, ma alle query / risposte AJAX.

nell'articolo i server 'back' sono http, e in particolare parlano di ibrido. Sarebbe ancora meglio se il retro fosse FastCGI e altri framework (più veloci?); ma è molto meno critico, dal momento che il team nginx / memcached assorbe la maggior parte del carico.

nota che se il tuo schema url per il traffico AJAX è ben progettato (REST è il migliore, IMHO), puoi mettere la maggior parte del DB proprio in memcached, e qualsiasi POST (che passerà all'app) può aggiornare preventivamente il cache.

Sulla domanda del DB, direi che PostgreSQL si ridimensiona meglio e ha una migliore integrità dei dati rispetto a MySQL. Per un piccolo sito MySQL potrebbe essere più veloce, ma da quello che ho sentito rallenta significativamente con l'aumentare delle dimensioni del database. ( Nota: non ho mai usato MySQL per un database di grandi dimensioni, quindi dovresti probabilmente avere una seconda opinione sulla sua scalabilità. ) Ma PostgreSQL si adatta bene e sarebbe una buona scelta per un traffico elevato sito.

Avranno bisogno di più dati. Jeff ha pubblicato alcuni articoli sugli stessi problemi e la risposta è stata aspettare fino a quando non si è verificato un problema di prestazioni.

per cominciare: chi ospita e che cosa ha a disposizione? quali sono le tue abilità in casa? Stai per assumere una ditta esterna? cosa raccomandano? progetto nuovo di zecca con un team disposto a imparare un nuovo framework?

La seconda cosa è fare alcuni mockup: come funzionerà l'interfaccia. di quali dati ha bisogno per caricare e persistere? l'idea è quella di mantenere il traffico tra il web e il lato db rivolto verso il basso. per esempio. nessuna pagina loquace con molte domande. ecc.

Una volta che hai una migliore idea dei requisiti e del flusso dei dati, allora lavora sulla progettazione del database. ci sono molte regole da seguire, ma una delle migliori è seguire le regole di normalizzazione (sì, sono un ragazzo db perché?)

Ora hai un paio di pagine costruite - esegui i tuoi test. stai avendo problemi? Sì, ora guarda cos'è. Pagina che serve o pull di db? Misura quindi scegli una linea di condotta.

Vorrei andare con nginx + php + xcache + postgresql

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