Sto creando il mio server web di prototipazione rapida e scalabile. Come dovrei progettarlo?

2

Creerò il mio server web che si concentra sulla scalabilità, sulla prototipazione rapida e sull'uso di JavaScript come linguaggio di scripting del server, proprio come node.js . Utilizzerà un modello di progettazione Model-View-Controller in modo che un web l'applicazione può supportare più utenti simultanei semplicemente aggiungendo l'hardware e non dover riprogettare il software. Fondamentalmente, sto puntando a produrre un framework che consenta uno sviluppo rapido e semplice delle applicazioni cloud senza la necessità di scrivere molto codice della piastra della caldaia. Ho alcune domande su questo ...

  1. Quanto sarà difficile mettere MySQL nel cloud? Come potrei fare per implementare questo e rendere il prodotto risultante libero? Dovrò scrivere il mio motore o modificarne uno esistente, se faccio ciò che dovrei fare attenzione?
  2. Per rendere scalabile questo ho bisogno di regolare da un server a centinaia di server questo crea il requisito per il bilanciamento del carico dei server, come devo fare questo? Se il saldo è basato sul carico di lavoro per server, mi serve il gateway per gestire tutte le richieste in arrivo. È l'idea giusta per far controllare tutti i server nel gateway e aggiornare lo stato.
  3. Facendo scorrere i server attraverso un gateway se il gateway muore tutte le richieste in arrivo vengono ignorate. Sto pensando che avere tutti i server mantengano una lista l'uno dell'altro, o almeno alcuni potrei ricostruire l'elenco dei server e stabilire un nuovo gateway. Ne vale la pena? O dovrei avere un gateway di backup che potrebbe uscire? Devo permettere all'utente di scegliere?
  4. Come dovrei scegliere quale server gestisce il database e quale gestisce la pagina? Devo diffondere il database in modo che le query siano preformate su più server? Quale teoricamente migliorerebbe le prestazioni.
  5. I server dovrebbero rispecchiare il database almeno una volta, in modo che se un server va giù, il database non è danneggiato. Quindi questo porta a scrivere un'altra domanda, dovrei trasmettere query SQL in modo che tutti i server possano prendere un po 'di carico di lavoro? Se lo faccio in questo modo, una query non intaserebbe la rete in modo che altre query non possano essere preformate? Quali sono le mie alternative?
  6. Infine, esiste già una soluzione gratuita che potrebbe richiedere una piccola modifica adatta alle mie esigenze?
posta Jason Dietrich 14.02.2011 - 06:26
fonte

1 risposta

15

Per favore, segui il mio consiglio nel modo migliore possibile. Credo che sia necessario utilizzare le ruote che altre persone hanno inventato per un po 'prima di inventare la propria ruota, nuova.

Dico questo perché è chiaro che non si conosce lo spazio del problema. I tuoi commenti indicano che non conosci il punto di MVC. Non sai come mettere MySQL nel cloud. Non capisci come le persone effettivamente eseguono il bilanciamento del carico. Sei convinto che hai bisogno di una scalabilità estrema pronta all'uso. E tu vuoi che la tua soluzione risolva ogni problema sotto il sole in una volta.

È improbabile che funzioni bene.

Se vuoi continuare ancora, ti consiglio vivamente di concentrarti solo su un pezzo del puzzle. Se hai una buona architettura, allora una macchina dovrebbe essere in grado di servire felicemente centomila richieste all'ora. Se si tenta di evitare la condivisione dello stato in qualsiasi macchina specifica, un servizio di bilanciamento del carico standard può soddisfare qualsiasi probabile esigenza di scalabilità. Quindi non devi ancora preoccuparti della scalabilità. Per un primo passaggio è possibile lasciare il mirroring e i backup nel database, hanno già soluzioni per questo. Il che fa sì che sia facile scrivere MVC senza un sacco di dati. Perché non ti concentri su questo per un po '? (Oppure guarda in giro per roba MVC costruita su Node.js. Non è che tu sia la prima persona con quel particolare bisogno sia.)

    
risposta data 14.02.2011 - 07:46
fonte