2009-12-26 13 views
6

Ricevo sempre questo argomento contro RoR che non è in scala, ma non ho mai una risposta appropriata se ciò significa davvero? Quindi ecco un novizio che chiede, che diavolo è questo "ridimensionamento" e come lo misuri?Che cos'è il ridimensionamento?

+5

Penso che Scaling è quello che stai facendo quando si programma in Scala. :-) –

+0

Puoi fornire qualche contesto per favore? Stai chiedendo di ridimensionare i siti web e/o le applicazioni per gestire più utenti/dati? – ChrisF

+0

@ChrisF Beh, più specificamente sto parlando di siti Web e anche ciò che in generale questo termine significa davvero. – itsaboutcode

risposta

10

Che diavolo è questo "ridimensionamento" ...

come termine generico, scalability significa la capacità di risposta di un progetto a diversi tipi di domanda. Un progetto che scala bene è uno che non ha problemi a tenere il passo con le richieste di più dei suoi servizi - o, almeno, non deve iniziare a respingere le richieste perché non può gestirle.

Spesso accade che semplicemente aumentando le dimensioni di un problema di un ordine di grandezza o due si evidenzino punti deboli nelle strategie utilizzate per risolverlo. Quando vengono esposte tali debolezze, si potrebbe dire che la soluzione al problema non "scala bene".

Per esempio, bogo sort è facile da implementare, ma non appena si sta l'ordinamento più di una manciata di cose, si inizia a prendere un tempo molto lungo per ottenere la risposta desiderata. Sarebbe giusto dire che il bogo sort non scala bene.

... e come lo misurate?

Questa è una domanda più difficile a cui rispondere. In generale, non ci sono unità associate alla scalabilità; affermazioni come "quel sistema è N volte più scalabile di quanto questo è" nel migliore dei casi sarebbe un confronto tra mele e arance.

La scalabilità viene misurata con maggiore frequenza osservando quanto bene un sistema resiste ai diversi tipi di richiesta nelle condizioni di prova. La gente potrebbe dire che un sistema si adatta bene se, per una vasta gamma di richieste di diverso tipo, può tenere il passo. Ciò è particolarmente vero se si alza per richiedere che attualmente non esista, ma ci si potrebbe aspettare che ci sia un improvviso aumento di popolarità. (Pensa allo Slashdot/Digg/Reddit effects.)

1

La scalabilità si riferisce alla capacità di un sistema di soddisfare un numero variabile di utenti. Questo può essere un numero crescente o decrescente di utenti, mentre ora proviamo a pianificare i nostri sistemi in base al cloud computing e al tempo di calcolo noleggiato.

Pensa a cosa è necessario fare un sistema di inserimento ordini progettato per 1000 ripetizioni per accomodare 100.000 rappresentanti. Quale hardware deve essere aggiunto? E i database? In poche parole, questa è la scalabilità.

+1

Non si riferisce necessariamente a un numero di utenti. Ad esempio, immagina un sistema a utente singolo che tiene traccia delle auto sulla strada. Potrebbe essere stato testato in città di 10.000 abitanti, ma si ridurrà a una città con una popolazione di milioni? –

+0

Vero ma stavo dando un esempio che penso che chiunque su SO può riguardare – DenaliHardtail

0

scalabilità di una domanda riguarda quanto è in grado di funzionare come il carico sulle modifiche applicative . Questo è spesso influenzata dal numero di utenti connessi, quantità di dati in un database, ecc

2

scalabilità ha un'ampia varietà di usi come indicato da Wikipedia:

scalabilità può essere misurata in varie dimensioni, come ad esempio :

  • carico scalabilità: La possibilità per un sistema distribuito facilmente espandersi e contrarsi il suo pool di risorse per ospitare pesante o più leggero carichi. In alternativa, la facilità con che un sistema o componente può essere modificato, aggiunto o rimosso, , a , consente di modificare il carico.
  • scalabilità geografica: La capacità di mantenere le prestazioni, utilità o utilizzabilità indipendentemente espansione da concentrazione in un'area locale ad un modello geografica più distribuito.
  • Scalabilità amministrativa: la possibilità per un numero crescente di organizzazioni di condividere facilmente un singolo sistema distribuito .
  • Scalabilità funzionale: la possibilità di migliorare il sistema tramite aggiungendo nuove funzionalità al minimo sforzo .

In una zona dove lavoro ci interessa le prestazioni di alta produttività e calcolo parallelo con l'aumentare il numero di processori.

Più in generale si trova spesso che l'aumento del problema (ad esempio) di uno o due ordini di grandezza getta una completamente nuova serie di sfide che non sono facilmente prevedibili dal sistema più piccolo

+0

Quindi possiamo dire che è tutto su quante persone attraversano il tunnel in un secondo? – itsaboutcode

+2

Si tratta di dire che se ci sono 10 volte più persone la risposta potrebbe non essere quella di costruire altri nove tunnel ma di trovare un modo diverso per attraversare le montagne. –

0

E 'la possibilità per un sistema per accettare un aumento del carico di lavoro, più funzionalità, modifica del database, ... senza influire sul design o sul sistema originale.

2

È un termine per esprimere la capacità di un sistema di mantenere le sue prestazioni man mano che cresce nel tempo.

Idealmente quello che vuoi è un sistema per raggiungere la scalabilità lineare . Significa che aggiungendo nuove unità di risorse, il sistema cresce ugualmente nella sua capacità di eseguire.

Ad esempio: Vuol dire, che quando tre server webapp in grado di gestire migliaia di utenti simultanei, che con l'aggiunta di tre più server, può gestire doppio dell'importo, duemila utenti simultanei in questo caso e non meno.

Se un sistema non ha la proprietà di scalabilità lineare, esiste un punto in cui aggiungere più risorse, ad es. hardware, non porterà alcun beneficio aggiuntivo, le prestazioni, ad esempio, convergono a zero: come sempre più server sono messi al lavoro. Nell'esempio sopra, il vantaggio aggiuntivo di ogni nuovo server diventa sempre più piccolo fino a raggiungere lo zero.

Pertanto, la scalabilità è il fattore che indica ciò che si ottiene come output da un dato input. Il suo range di valori è compreso tra 0 e infinito positivo, in teoria. In pratica, qualsiasi cosa uguale a 1 è più desiderabile ...

Problemi correlati