2012-02-23 14 views
42

He leído muchos artículos que comparan lenguajes de programación.¿Qué significa escalabilidad?

Hay una palabra que viene a menudo: escalabilidad. De hecho, traté de buscar una explicación simple y clara, pero no la encontré.

¿Puede explicarnos qué significa la escalabilidad?

Gracias.

+2

Eche un vistazo al desplazamiento de la etiqueta de escalabilidad ... ¡Es un buen comienzo! Google también. Hay miles de millones de recursos que lo explican de manera completa y fácil ... como http: // shiflett.org/blog/2003/oct/what-is-scalability – king14nyr

+1

En las figuras en el enlace de @ king14nyr, O (c^n), O (n) y O (log (n)), son todas notación Big-O . Como puede ver con grandes conjuntos de datos (n registros), los programas que tienen el patrón O (log (n)) funcionarán muy bien, mientras que O (c^n) funcionará MUY mal. Esos son los dos extremos. – Furbeenator

Respuesta

40

La escalabilidad es la capacidad de un programa para escalar. Por ejemplo, si puede hacer algo en una base de datos pequeña (digamos menos de 1000 registros), un programa que sea altamente escalable funcionaría bien en un conjunto pequeño y funcionaría bien en un conjunto grande (digamos millones o miles de millones de registros))

Como dijo la brecha, tendría un crecimiento lineal de los requisitos de recursos. Busque la notación de Big-O para obtener más detalles sobre cómo los programas pueden requerir más cálculos cuanto más grande sea la entrada de datos. Algo parabólico como Big-O (x^2) es mucho menos eficiente con grandes entradas x que algo lineal como Big-O (x).

+1

Esto es realmente incorrecto. Para una escalabilidad lineal, tendría un crecimiento lineal. aún puede ser escalable de formas no lineales (naturalmente hasta un límite). En segundo lugar, la escalabilidad se gana/se muestra cambiando el hardware. si tengo una configuración enorme y la ejecuto primero con 1 TPS mientras que realmente puede manejar 100 TPS, ejecutarla en 100TPS no es escalarla. Si la carga puede aumentar a 10KTPS cambiando el HW, entonces es escalable –

+3

En el contexto de la pregunta OP, estaba describiendo la escalabilidad de los algoritmos de software. Este contexto es típico en los cursos universitarios. Al comparar la escalabilidad de dos algoritmos potenciales, uno con requisitos de recursos lineales va a ser altamente escalable en comparación con uno con requisitos de recursos parabólicos. – Furbeenator

+0

Obtengo la escalabilidad que es particular en los algoritmos de software. Pero, ¿qué es la escalabilidad en un lenguaje de programación? –

6

Mi entendimiento es que significa que un aumento lineal en la producción solicitó sólo se exige un incremento lineal en recursos.

19

La escalabilidad es el rasgo en el que una solución de software puede manejar el aumento de cargas de trabajo. Esto puede ser conjuntos de datos más grandes, mayores tasas de petición, combinación de tamaño y velocidad, etc.

Cuando se habla de sistemas de escalabilidad, que por lo general se diferencian entre

  • "Scale Up" - la capacidad de crecer mediante el uso de hardware más fuerte
  • "escalar" - la capacidad de crecer mediante la adición de más hardware

una solución que puede escalar a cabo por lo general puede llegar a medir cargas lager de una manera más rentable. Una cosa importante que debe saber aquí es Amdahl's law que indica que la capacidad de escalar está limitada por la parte secuencial del software

8

Ya hemos obtenido excelentes respuestas aquí, solo queremos agregar algunas cosas aquí.

Escalabilidad se puede lograr mediante 2 formas

vertical - De esta manera, se agrega más mercancías duras como más memoria RAM, procesador o más nodos. También introduce el equilibrador de carga, que ayudará a enrutar las llamadas entrantes a varios servidores según el algoritmo de enrutamiento utilizado. La aplicación ahora puede manejar más carga a medida que se comparte la carga en los servidores.

Horizontal - En la escala horizontal, usted diseña la aplicación de manera que pueda comportarme bien en más tráfico paralelo. Compruebe cómo está gestionando la memoria, las sesiones, el estado de la memoria caché &, etc. Si está utilizando la sesión para mantener la información del usuario, bajo una gran carga el servidor único podría estar más ocupado administrando los servidores, por lo que en este caso puede verificar la posibilidad de pasando a ser apátrida. También puede responder a solicitudes entrantes del mismo usuario en paralelo en lugar de respuestas en serie, lo que sucede si las sesiones se están utilizando.