2009-12-26 13 views
6

Siempre obtengo este argumento en contra de RoR que no escala, pero nunca recibo una respuesta adecuada, ¿qué significa realmente? Así que aquí hay un principiante que pregunta, ¿qué diablos es esto "escalando" y cómo lo mides?¿Qué es el escalamiento?

+5

Creo que Scaling es lo que estás haciendo al programar en Scala. :-) –

+0

¿Puede proporcionar algún contexto, por favor? ¿Está preguntando sobre la ampliación de sitios web y/o aplicaciones para manejar más usuarios/datos? – ChrisF

+0

@ChrisF Bueno, más específicamente, estoy hablando de sitios web y también lo que en general significa este término. – itsaboutcode

Respuesta

10

¿Qué diablos es esto "escalar" ...

Como término general, scalability significa la capacidad de respuesta de un proyecto para diferentes tipos de demanda. Un proyecto que se escala bien es aquel que no tiene problemas para seguir atendiendo las solicitudes de más servicios, o al menos no tiene que comenzar a rechazar las solicitudes porque no puede manejarlas.

A menudo ocurre que simplemente aumentar el tamaño de un problema en una orden de magnitud o dos expone deficiencias en las estrategias que se usaron para resolverlo. Cuando tales debilidades están expuestas, se podría decir que la solución al problema no "escala bien".

Por ejemplo, bogo sort es fácil de implementar, pero tan pronto como se toque lavar más de un puñado de cosas, que comienza a tomar un tiempo muy largo para obtener la respuesta que desea. Sería justo decir que el género bogo no escala bien.

... ¿y cómo lo mides?

Esa es una pregunta más difícil de responder. En general, no hay unidades asociadas con la escalabilidad; afirmaciones como "ese sistema es N veces tan escalable como este" es, en el mejor de los casos, una comparación de manzanas a naranjas.

La escalabilidad se mide con mayor frecuencia al ver qué tan bien un sistema se enfrenta a diferentes tipos de demanda en condiciones de prueba. La gente podría decir que un sistema escala bien si, en un amplio rango de demanda de diferentes tipos, puede mantenerse al día. Esto es especialmente cierto si se pone de pie para exigir que no experimente actualmente, pero podría esperarse si se produce un repentino aumento en la popularidad. (Piense en el Slashdot/Digg/Reddit effects.)

1

La escalabilidad se refiere a la capacidad de un sistema para acomodar un número cambiante de usuarios. Esto puede ser un número creciente o decreciente de usuarios, ya que ahora intentamos planificar nuestros sistemas en torno a la computación en la nube y el tiempo de computación alquilado.

Piense en lo que implica hacer un sistema de entrada de pedidos diseñado para una escala de 1000 repeticiones para acomodar 100.000 repeticiones. ¿Qué hardware necesita ser agregado? ¿Y las bases de datos? En pocas palabras, esto es escalabilidad.

+1

No se refiere necesariamente a una cantidad de usuarios. Por ejemplo, imagina un sistema de usuario único que rastrea autos en la carretera. Podría haber sido probado en una población de 10.000 habitantes, pero ¿se convertirá en una ciudad con una población de millones? –

+0

Es cierto, pero estaba dando un ejemplo de que creo que cualquier persona en SO puede relacionarse con – DenaliHardtail

0

escalabilidad de una aplicación se refiere a la forma en que es capaz de realizar ya que la carga sobre los cambios en las aplicaciones . Esto es a menudo afectada por el número de usuarios conectados, cantidad de datos en una base de datos, etc.

2

Escalabilidad tiene una amplia variedad de usos como se indica por Wikipedia:

escalabilidad se puede medir de diferentes dimensiones, tales como :

  • carga escalabilidad: La capacidad de un sistema distribuido de manera fácil expandirse y contraerse su fondo de recursos para dar cabida a más o menos abundantes cargas. Alternativamente, la facilidad con que un sistema o componente puede ser modificado, agregado o eliminado, a acomoda la carga cambiante.
  • escalabilidad geográfica: La capacidad de mantener el rendimiento, utilidad, o sobre la utilidad independientemente de expansión de la concentración en un área local a un patrón geográfico más distribuida.
  • Capacidad de ampliación administrativa: la posibilidad de que un número cada vez mayor de organizaciones comparta fácilmente un solo sistema distribuido .
  • Escalabilidad funcional: la capacidad de mejorar el sistema por agregando nuevas funcionalidades a un esfuerzo mínimo de .

En un área donde trabajo estamos interesados ​​en el rendimiento de alto rendimiento y de computación en paralelo a medida que aumenta el número de procesadores.

De manera más general a menudo se encuentra que el aumento del problema (por ejemplo) una o dos órdenes de magnitud lanza un nuevo conjunto de desafíos que no son fácilmente predecibles desde el sistema más pequeño

+0

Entonces, ¿podemos decir que todo se trata de cuántas personas pasan por el túnel en un segundo? – itsaboutcode

+2

Se trata más de decir que si hay 10 veces más personas, la respuesta puede no ser construir nueve túneles más, sino encontrar un camino diferente a través de las montañas. –

0

Es la capacidad para un sistema para aceptar una mayor carga de trabajo, más funcionalidad, cambio de base de datos, ... sin afectar el diseño o sistema original.

2

Es un término para expresar la capacidad de un sistema para mantener su rendimiento a medida que crece con el tiempo.

Lo ideal es lo que quiere, es un sistema para alcanzar escalabilidad lineal. Significa que al agregar nuevas unidades de recursos, el sistema crece igualmente en su capacidad de rendimiento.

Por ejemplo: Significa, que cuando tres servidores de aplicación web pueden manejar miles de usuarios simultáneos, que mediante la adición de tres más servidores, que puede manejar doble de la cantidad, dos mil usuarios concurrentes en este caso y no menos.

Si un sistema no tiene la propiedad de escalabilidad lineal, hay un punto donde agregar más recursos, p. hardware, no traerá ningún beneficio adicional, el rendimiento, por ejemplo, converge a cero: a medida que más y más servidores se ponen a la tarea. En el ejemplo anterior, el beneficio adicional de cada nuevo servidor se vuelve cada vez más pequeño hasta que llega a cero.

Por lo tanto, escalabilidad es el factor que le dice lo que obtiene como salida de una entrada dada. Su rango de valores se encuentra entre 0 y infinito positivo, en teoría. En la práctica, cualquier cosa igual a 1 es lo más deseable ...