2009-06-01 15 views
15

Durante la lettura di framework (.net. Ruby on rails, django, spring, ecc.), Continuo a vedere così e così o non scala bene.Che cosa significa dire che un framework "scala bene"?

Che cosa significa quando qualcuno afferma che un framework "scala bene" e cosa significa dire che un framework "non scala bene"?

Grazie.

+9

Una scala è un dispositivo vecchio stile per la misurazione mediante confronto. Solitamente sono costruiti per mezzo di un equilibrio ... Sfortunatamente, questo rende difficile misurare le cose che oscillano e saltano molto - quindi una struttura che si sta fermando è considerata "scala bene", mentre si comporta come se mescolato troppa coca cola nel suo gallone quotidiano di scaglie di caffè male. – Shog9

+0

Hahaha, bel confronto, Shog9. –

+6

Dire "Il framework X non scala bene" significa spesso "Ho un odio irrazionale verso il Framework X". D'altro canto, dire "Quadro Y scala bene" significa qualcosa sulla falsariga di "Mi piace Framework Y ma non voglio ammettere che mi piace perché rende facile creare pulsanti lucidi". – Pesto

risposta

15

Quando si traccia un po 'di uso delle risorse (memoria, tempo, spazio su disco, larghezza di banda della rete) rispetto agli utenti concorrenti, si ottiene una funzione che descrive come l'applicazione funziona su diversi fattori di scala.

Piccola scala - alcuni utenti - utilizza poche risorse.

Grande scala: un numero elevato di utenti utilizza un numero elevato di risorse.

La domanda cruciale è "quanto vicino al lineare è il ridimensionamento?" Se scala linearmente, servire 2.000 utenti simultanei costa 2 volte tanto quanto servire 1.000 utenti e 4 volte tanto quanto servire 500 utenti. Questo è uno strumento/framework/lingua/piattaforma/OS che si adatta bene.È prevedibile e la previsione è lineare.

Se non scala in modo lineare, servire 4.000 utenti costa 1.000 volte tanto quanto servire 2.000 utenti che costano 100 volte per 500 utenti. Questo non ha scalato bene. Qualcosa è andato storto quando l'uso è aumentato; non sembra prevedibile e non è lineare.

+1

Anche lineare non è sempre buono. Idealmente vorrebbe che si stabilizzasse o si livellasse quando il numero di utenti raggiunge un volume critico. Tuttavia, questo non è sempre possibile e probabilmente non è possibile un sacco di volte ... semplicemente ideale. –

+0

Direi che questa risposta è un po 'generica. Descrive il ridimensionamento o ridimensionamento lineare. Anzi contro memoria, tempo, disco e larghezza di banda che sono parametri di una singola stazione. Tipicamente un framework sarà usato in un ambiente distribuito dove questi parametri potrebbero non essere così ovvi da valutare. Puoi commentare 1000 utenti rispetto a 10000 utenti in scala? – mariotti

+0

La scalabilità della gestione è un'altra considerazione chiave. Se l'esecuzione di una configurazione a 5 server richiede 1 DBA e 10 server richiedono 2 DBA, potrebbe non essere possibile assumere e formare DBA abbastanza velocemente. L'elemento umano di mantenere un quadro è molto importante. –

7

Significa che un particolare framework (o non) soddisfa l'aumento della domanda che un maggior numero di utenti mette su di esso. Ad esempio, se si dispone di un'applicazione scritta in VBScript, potrebbe non essere un buon lavoro gestire i 40.000.000 di utenti di Facebook.

This blog post spiega alcuni dei problemi di scalabilità che Twitter ha registrato circa un anno fa. Potrebbe fornire ulteriori informazioni sulla risposta alla tua domanda.

A volte la mancanza di scalabilità viene utilizzata per denigrare una lingua o un framework, quindi fai attenzione. Attenersi agli studi che mostrano metriche reali. Questo vale anche per il mio esempio VBScript nel paragrafo precedente.

+0

Immagino che Facebook abbia avuto 40 milioni di utenti nel 2009, e se non avessero una piattaforma che si ridimensionasse bene, non sarebbero in grado di gestire i 1000 milioni di utenti che hanno ora. – Ozzy

+0

Non è pazzesco? Che differenza fanno 3 anni. Bella presa. –

3

Se un framework o un'applicazione si adatta bene, significa che può gestire carichi più grandi. Man mano che il tuo sito diventa più popolare con più visitatori e più hit al giorno, un framework che scala bene gestirà il carico maggiore allo stesso modo in cui gestisce un carico minore. Un framework che scala bene agirà allo stesso modo quando riceve 200.000 accessi all'ora come fa quando ottiene 1 hit all'ora. Non solo colpisce, ma viene distribuito su più server, forse dietro il bilanciamento del carico, possibilmente con diversi server di database diversi. Un quadro che scala bene può gestire bene queste crescenti richieste.

Ad esempio, twitter è esploso quasi da un giorno all'altro l'anno scorso. È stato sviluppato utilizzando Ruby On Rails ed è stato protagonista nel dibattito in corso sul fatto che Rails si adatti bene o meno.

+0

Quindi cosa è successo? Hanno continuato con Rails? – johnny

+0

Sono in parte su Rails e in parte stanno passando a Scala. http://www.theregister.co.uk/2009/04/01/twitter_on_scala/ –

2

Ci sono alcuni elementi ad esso nella mia mente. Il primo è ovvio: il ridimensionamento delle prestazioni. Il tuo framework può essere utilizzato per costruire capacità elevate, sistemi ad alto throughput o può essere usato solo per costruire applicazioni più piccole. Si scalerà verticalmente sull'hardware (ad esempio librerie parallele) e verrà scalato orizzontalmente (ad esempio, le web farm).

Il secondo è in grado di scalare le squadre più grandi o l'impresa. Cioè, funziona bene con basi di codice di grandi dimensioni? Grandi team di sviluppo? Ha un buon supporto per gli strumenti? Quanto è facile da implementare? Puoi distribuire a decine o centinaia o persino migliaia di utenti? Fino in fondo è facile assumere persone con questa abilità. Pensa di provare a mettere insieme un team di sviluppo di 20 o 50 persone che lavorano su questo framework. Sarebbe facile o quasi impossibile?

0

IMHO, dicendo che una struttura "si adatta bene" di solito significa che qualcuno nella catena dei diciannove era in grado di usarlo per gestire un sacco di volume.

Nella scalabilità di programmazione parallela viene in genere utilizzato per descrivere il funzionamento di un algoritmo parallelamente. Un algoritmo che ha un 1: 1 speedup è una bestia rara ma raddoppierà le prestazioni sul doppio dell'hardware/CPU, triplo su tre volte l'hardware/CPU, ecc ...

Nella mia esperienza praticamente qualsiasi quadro può essere prodotto su scala con sufficiente esperienza.

Più l'infrastruttura è semplice da utilizzare, maggiori sono le possibilità che uno sviluppatore con competenze insufficienti riceva problemi di scalabilità.

0

Significa che un'azienda rispettata sta facendo qualcosa di serio con esso e non ha alcun problema con esso.

0

Scalare significa quanto è facile soddisfare più richieste utilizzando più hardware.

Esempio: si dispone di un sito Web scritto in una lingua che riceve 1000 visite al giorno. Diventi protagonista in alcuni importanti magazin e il numero di utenti aumenta. Improvvisamente hai 1000000 visite al giorno, questo è 1000 volte tanto. Se puoi semplicemente utilizzare altri 1000 server per soddisfare il crescente bisogno di risorse, il tuo sito web si adatta bene. Se invece si aggiungono 2000 server, ma gli utenti ancora non riescono a connettersi, perché il database può gestire solo 1000 richieste al giorno, che il sito Web non scala bene.