2009-05-25 4 views

risposta

36

Nell'ultimo anno ho dovuto affrontare questa domanda per un progetto su cui la mia azienda sta lavorando e ho trovato queste risorse estremamente utili: Todd Hoff's highscalability.com; Scalable Internet Architectures, di Theo Schlossnagle; e Building Scalable Web Sites, di Cal Henderson. In particolare, Highscalability.com ti indicherà molte buone presentazioni, tutorial, libri e documenti ed è un ottimo punto di partenza. Tutti i consigli sono pratici e basati sull'esperienza in siti come Flickr, Twitter e Google.

BTW, la scalabilità non è prestazioni. Un sistema perfettamente scalabile è uno che ha un costo marginale fisso per aggiungere utenti o capacità aggiuntivi.

+0

Belle risorse che hai indicato! – mmcdole

+0

oh consiglio di scalabilità da twitter, deve essere buono ..;) – Jonatan

+0

Hah, avrei potuto scegliere un esempio migliore, immagino! ;-) Ma Twitter ha dovuto lottare duramente per superare i loro crescenti dolori. Vedi http://highscalability.com/scaling-twitter-making-twitter-10000-percent-faster. –

0

vorrei suggerire questo libro per questo:

http://www.amazon.com/Scalable-Internet-Architectures-Developers-Library/dp/067232699X/ref=sr_1_1?ie=UTF8&s=books&qid=1243267630&sr=8-1

Anche se questo è soprattutto un libro PHP, le idee sono le stesse per ogni pila web.

+0

Sono d'accordo, anche se non lo definirei come un libro in PHP. Ha esempi significativi in ​​Perl, Oracle PL/SQL e in altri linguaggi, e c'è anche un sacco di materiale di alto livello, come il Capitolo 5 sul bilanciamento del carico (nessun esempio di codice) e il Capitolo 6 sulla pubblicazione di contenuto statico (un piccolo snippet PHP). Una delle critiche che ho notato è che si concentra troppo sulla libreria Johns Hopkins Spread, ma in generale le persone della comunità con scalabilità elevata ne sono entusiaste. –

1

Prima di iniziare con la tecnica, è necessario conoscere l'ambito di applicazione a temperature estremamente basse. Cosa si aspettano il cliente/la business unit in termini di prestazioni e quali sono le aree critiche di insuccesso? Scott Hanselman ha avuto un ottimo podcast per quanto riguarda l'argomento.

Alcuni dei suggerimenti offerti: non utilizzare la memorizzazione nella cache a meno che non sia necessario; servire file è più veloce dell'assemblaggio di frammenti da un database; sapere come gestire i tempi del server Peek; sai quali saranno le tue vette.

Anche in questo caso, conosce la portata del primo utilizzo, al fine di sapere se si scala dovrebbe.

0

This è esattamente ciò di cui hai bisogno! L'Application Architecture Guide è stata creata dal team di Microsoft Patterns and Practices per aiutare gli architetti ...

0

Questa è una buona introduzione al tema: IBM developerWorks ha avuto un paio di interessanti tutorial su come utilizzare i modelli di architettura per le applicazioni che scala: here e here.

2
  • Tendo a pensare che la scalabilità sia strettamente correlata alla manutenibilità. E sembra essere spesso trascurato che le persone trascorrono solo poco tempo nello sviluppo delle applicazioni e nel resto del tempo mantenendo.

  • Inoltre, il ridimensionamento ha quasi certamente a che fare con i dati (che è più agile rispetto al codice - in modo da avere più e più di esso), ecco perché il costo di accesso di stoccaggio dovrebbe rimanere tra il O(1) e O(n).

  • L'applicazione perfettamente scalabile per me è quella che è possibile copiare da un ambiente ad un altro (simile) ambiente, configurare alcuni valori ed eseguirlo per estendere l'ambito di esecuzione dell'intera applicazione.

3

Ci sono già alcune grandi risposte pubblicate qui. In alcuni libri e link troverai alcuni modelli di pensiero comuni.

  • Scrivi il meno codice possibile

  • il riutilizzo del codice, per quanto possibile

  • Non più, o sotto il vostro disegno astratto

  • cose penetrare in aree modulari può funzionare su sistemi separati o multipli. L'elaborazione pesante dovrebbe essere lasciata a un sistema separato.

4

Questa è una buona lettura su livejournal e su come hanno ridimensionato la loro applicazione nel tempo.

danga.com/words/2004_mysqlcon/mysql-slides.pdf [PDF]

Potrebbe non essere il genere di cosa che stai cercando, ma è uno dei migliori "Questo è quello che abbiamo fatto e perché" panoramiche sulla scala.

+0

+1 Questo cammina attraverso l'intero processo partendo da una macchina fino alla condivisione di un grande sito in gruppi di utenti. La loro presentazione del 2007 è qui: http://www.scribd.com/doc/39892/Website-Scalability-LiveJournal-Behind-The-Scenes-2007 –

+0

Una versione più lunga della presentazione 2007: http: //www.danga. it/words/2007_04_linuxfest_nw/linuxfest.pdf ver –

1

Qualsiasi cosa tu faccia, non è possibile progettare il sistema fin dall'inizio per renderlo scalabile per tutte le esigenze. Spesso, una volta avviato il sistema, si individuano dei colli di bottiglia in cui meno te lo aspetti (ad es. Larghezza di banda della rete locale). Ad ogni modo, il mio consiglio è sicuramente highscalability.com :)