Escalabilidad

De Wikipedia, la enciclopedia libre
Saltar a navegación , búsqueda

En el contexto de software que se entiende por una escalabilidad del sistema de hardware y software, cuya potencia es proporcional mediante la adición de recursos o más nodos / equipos de un área definida (o lineal) aumenta.

Una definición generalmente aceptada de este término no es trivial [1] . Es necesario para cada caso particular, siempre especificar un rango. (Por ejemplo, un sistema con escala de 100 usuarios simultáneos no es necesariamente el mismo que el de 100.000 accesos)

Los recursos pueden incluir, por ejemplo: CPU, RAM, discos duros, ancho de banda de red, ...

La escalabilidad del sistema está conectado al factor de escala (también llamado SpeedUp) especificado.

Contenido

[ edit ] frente vertical. escala horizontal

Se puede mejorar el rendimiento de un sistema de dos maneras: [2]

[ edit ] escala vertical (scale-up)

Bajo la escala vertical se define como una para mejorar el rendimiento mediante la adición de recursos a un nodo / equipo del sistema. Ejemplos sería el más grande de espacio, la adición de una CPU, o la instalación de una tarjeta de gráficos más potente.

Característica de este tipo de escala es que un sistema, independientemente de la implementación del software se puede hacer más rápidamente. Es decir, no se debe modificar la línea de código para encontrar una mejora del rendimiento a través de la escala vertical. El gran inconveniente sin embargo es el que tarde o temprano se encuentra con un límite en el que se actualiza el equipo ya no pueda, si ya utiliza el mejor hardware que esté en el mercado en este momento.

[ edit ] horizontal escala (fuera de escala)

En contraste con la escala vertical de la escala horizontal no hay límite (en términos de hardware) se establecen. La expansión horizontal significa aumentar el rendimiento de un sistema mediante la adición de otros equipos / nodos. La eficiencia de este tipo de escala depende en gran medida de la aplicación del software, ya que no todo el software es igualmente bien paralelizable.

[ editar ] Tipos de escalabilidad

Hay básicamente cuatro tipos de escalabilidad: [3]

[ edit ] Lastskalierbarkeit

Lastskalierbarkeit está fuera por un comportamiento del sistema consistente en todo el rango de carga de gran tamaño. Esto significa que un sistema para el que tiene tanto en el bajo, no demasiado retraso medio, así como a una alta carga y las peticiones pueden ser procesados ​​rápidamente.

[ edit ] Ejemplo de armario Museo

En un vestidor en un museo en el que los visitantes dejan las chaquetas y recogerlos, es la base de primer llegado, primer servido. Hay un número limitado de ganchos para colgar ropa y un mayor número de visitantes. El armario en la cola para los visitantes en una serie, es un carrusel. Para encontrar un gancho libre, o la chaqueta, la trata cada linealmente a partir de entonces.

Nuestro objetivo ahora es el tiempo que un visitante puede realmente pasar en el museo, que se maximiza.

El rendimiento de este sistema está bajo carga pesada dramáticamente mal. En primer lugar, la búsqueda es cada vez más sofisticado gancho libre, los ganchos de acero menos disponibles. En segundo lugar está bajo carga pesada (por ejemplo en invierno) un estancamiento inevitable. Durante la mañana, como todos los visitantes de sus chaquetas, los consiguen de nuevo en la noche de todos. Un interbloqueo es probable que se produzca al mediodía y por la tarde, cuando no hay colgadores libres están más disponibles y más visitantes están al final de la cola para recoger su chaqueta.

Las personas que deseen recoger su chaqueta podría resolver este punto muerto pidiendo a los visitantes que llegan a ser admitidos en la cola. Debido a que las personas que recogen la chaqueta, sólo después de un cierto tiempo de espera se piden, este sistema es muy inperformant.

El aumento del número de anzuelos sólo aplazaría el problema, pero no solucionarlo. El Lastskalierbarkeit tanto, es muy pobre.

[ edit ] escalabilidad espacial

Escalabilidad espacial, un sistema o aplicación cuando el requisito de memoria en un número creciente de elementos a ser administrada no aumenta inaceptablemente altos. Después de "inaceptable" es un término relativo, se llama en este contexto es generalmente aceptable de si el requisito de memoria aumenta en más sub-lineal. Para lograr esto, por ejemplo, una matriz dispersa (matriz dispersa alemán) o de compresión de datos que deben aplicarse. Después de la compresión de datos lleva algún tiempo, esto es, sin embargo, a menudo en conflicto con Lastskalierbarkeit.

[ edit ] espacio-temporal escalabilidad

Un sistema tiene una escalabilidad temporal y espacial al aumentar el número de objetos que comprende un sistema, no un impacto significativo en su desempeño. por ejemplo, tiene un motor de búsqueda con complejidad lineal para cualquier escalabilidad temporal-espacial, mientras que un motor de búsqueda indexada o ordenados datos, por ejemplo, utilizando una tabla hash o un árbol equilibrado y bien podría mostrar una escalabilidad tiempo-espacial .

[ edit ] escalabilidad estructural

Las características estructurales de escalabilidad de un sistema, su aplicación, aumentando el número de objetos dentro de un área definida por el usuario no interfiere de manera significativa.

[ edit ] dependencia entre los tipos de escalabilidad

Abhängigkeiten.png

Tener un sistema como este puede tener varios tipos de escalabilidad, está la cuestión de cómo y si están relacionados entre sí.

El Lastskalierbarkeit un sistema que no está necesariamente afectada negativamente por una pobre escalabilidad espacial, estructural o. Los sistemas con una escalabilidad deficiente espacial o temporal espacial-tienen. Debido a la sobrecarga de gestión de memoria y de búsqueda del alto costo, y posiblemente también una mala Lastskalierbarkeit Los sistemas con buena escalabilidad temporal-espacial podría tener un Lastskalierbarkeit malo si no es suficiente, por ejemplo, ha sido paralelo.

La relación entre Lastskalierbarkeit estructural y la escalabilidad se ve así. Mientras que este último no tiene ningún efecto sobre la primera, que se puede invertir muy bien ser el caso.

Los diferentes tipos de escalabilidad no son totalmente independientes.

[ editar ] Factor de Escala

Skalierbarkeit.png

El factor de escala (SpeedUp) describe el aumento de rendimiento real de una unidad de recursos adicionales. Por ejemplo, una CPU segundo a 90% rendimiento extra.

De una escalabilidad super-lineal es cuando el factor de escala cuando la adición de recursos es mayor.

Escalabilidad lineal significa que el factor de escala del sistema de agregado por unidad de recursos sigue siendo el mismo.

Sub-Lineal La escalabilidad es en contraste con la disminución del factor de escala cuando la adición de recursos.

Escalabilidad negativa se logra, si el rendimiento se degrada por la adición de los recursos / incluso ordenadores. Con este problema, hay que luchar, si la carga administrativa que resulta de la computadora adicional, más grande que la ganancia de rendimiento obtiene en ellos.

Amdahl ley es un modelo relativamente pessimisitisches para estimar el factor de escala. Basado en esto, es Gustafson ley es otra manera de calcular este factor.

[ editar ] Sistema como un modelo en capas

Un sistema ahora posible construir escalables se ha demostrado en la práctica, tal como un modelo de capas de implementar, ya que con este enfoque, las capas individuales están lógicamente separados y cada capa se puede escalar por sí mismos.

Una arquitectura muy popular en el área del alma es la arquitectura de 3 capas. De esta manera a lograr una alta escalabilidad, es un factor clave que cada uno de estos tres escalas capas también.

Durante la capa de presentación puede ser relativamente fácil de escala horizontalmente, es la capa de lógica a una aplicación especialmente diseñada del código requerido. Cabe señalar que una proporción muy elevada de la lógica se puede paralelizar (ver Amdahl derecho y el derecho Gustafson arriba). Lo más interesante, sin embargo, la escala horizontal de la capa de almacenamiento de datos, ¿por qué este tema en una sección aparte (ver escala de la capa de almacenamiento más adelante) dedicado.

[ edit ] maneras prácticas de mejorar la escalabilidad de las páginas web

Mejorar la escalabilidad de los sitios Web se puede lograr mediante el aumento del rendimiento, ya que un servidor de este modo puede servir a más clientes en el mismo tiempo.

Martin L. Abbott y Michael T. Fisher han desarrollado 50 reglas que deben ser consideradas en términos de escalabilidad [4] . Para los sitios web, entre otras, las siguientes reglas son pertinentes:

[ edit ] Reducir las búsquedas DNS y el número de objetos

Mientras observa la carga de una página en un navegador con una herramienta de depuración (por ejemplo Firebug ) Llama la atención que los artículos similares de gran tamaño requieren tiempo de carga diferente. En una inspección más detallada se puede ver que algunos de estos elementos tienen un adicional de DNS necesidad de búsqueda. Este proceso se puede abordar mediante resolución DNS cache para acelerar a diferentes niveles (por ejemplo, navegador, sistema operativo, ISP, etc.) Para reducir el número de búsquedas, se puede todos los archivos CSS y Javascript junto a cada uno y puedes participar en todas las imágenes de una gran y usando sprites CSS para mostrar sólo la imagen que desee. En general, se puede establecer la siguiente regla de los menores búsquedas DNS son necesarios cuando se carga una página, mejor será el rendimiento. El siguiente gráfico ilustra cómo caro la búsqueda de DNS y la conexión son proporcionadas.

Objeto descarga time.png


Sin embargo, los navegadores modernos múltiples conexiones simultáneas a un servidor para mantener abiertas a descargar varios objetos. De acuerdo con HTTP/1.1 RFC [5] debe ser la cantidad máxima de conexiones simultáneas por servidor en el navegador se limitan a 2. Algunos navegadores ignorar esta directiva, sin embargo, y utilizar un máximo de 6 conexiones simultáneas, y más. Al disminuir en un sitio web, pero ahora todos los archivos JavaScript y CSS, así como todas las imágenes en un solo archivo, lo que facilita la carga en el suministro de servidores, pero en las mismas palancas del mecanismo de las conexiones paralelas del navegador.

Idealmente, se hace uso de esta paralelización en el navegador completamente y todavía tener como pocas búsquedas DNS. Para lograr la distribuye a un mejor sitio web en varios subdominios (por ejemplo, llamando a una de las imágenes en un subdominio, mientras que las cargas de vídeo de otro). Este procedimiento puede rápidamente alcanzar la mejora de rendimiento considerable. Desafortunadamente, no hay una respuesta general a la cantidad de subdominios que puedes usar con el fin de lograr el mejor rendimiento posible. Las pruebas simples de rendimiento de la página debe ser optimizada, sino también proporcionar rápidamente información.

[ editar ] Escala de la capa de gestión de datos

[ editar ] Escala para las solicitudes de base de datos

La parte más difícil de un sistema a escala es generalmente la base de datos o de la capa de almacenamiento de datos (véase más arriba). El origen de este problema hasta que el documento "Un modelo relacional de datos para grandes bancos de datos compartidos" [6] se puede rastrear por Edgar F. Codd, que el concepto de un sistema de bases de datos relacionales (RDBMS) imagina.

Para escalar un método para bases de datos es hacer uso de que la mayoría de las aplicaciones y bases de datos tienen muchas más lecturas que escrituras. Un escenario realista que se describe en el libro escrito por Martin L. Abbott y Michael T. Fisher, una plataforma de reservas libro que tiene una proporción de accesos de lectura y escritura de 400:1. Este tipo de sistema se puede escalar con relativa facilidad por múltiples copias de sólo lectura de estos datos se puede hacer.

Hay varias formas de distribuir copias de estos datos en función de la forma actual de los datos de los duplicados debe ser real. Básicamente, no debería haber ningún problema, de que estos datos serán sincronizados sólo cada 3, 30, o 90 segundos. En el escenario de la plataforma de libro, hay 100 000 libros y 10% de las cuales están reservadas al día. Se aceptan reservaciones, el distribuida uniformemente durante todo el día, nos encontramos sobre una reserva por segundo en lugar de (0,86 seg). La probabilidad de que en ese momento (en 90 segundos) al reservar en otro cliente desea reservar los importes del Libro mismos a 0,104%. Por supuesto, y este caso se llega a un cierto punto, pero este problema puede ser contraproducente a través de una exhaustiva revisión de la base de datos.

Una manera de implementar este método es que los datos, tales como un almacén de claves-valor (por ejemplo, Redis a) caché . La memoria caché debe ser renovada después de la expiración de su validez y por lo tanto alivia la base de datos tremendamente. La forma más sencilla de implementar esta memoria caché es instalarlo en una capa existente (por ejemplo, la capa de lógica). Para un mejor desempeño y escalabilidad son utilizados como una capa separada, o en su propio servidor, entre la capa lógica y la capa de almacenamiento.

El siguiente paso es replicar la base de datos. Los sistemas de bases de datos más populares ya tienen esta característica. MySQL logra esto con el principio maestro-esclavo, la base de datos master es la base de datos real con acceso de escritura y las bases de datos auxiliares son copias de sólo lectura de los duplicados. La base de datos master registra todas las actualizaciones, inserciones, borrados, etc en el registro binario llamado a los esclavos y reproducirlas. Estos esclavos uno está detrás de un equilibrador de carga (ver más abajo) con el fin de distribuir la carga en consecuencia.

Este tipo de escala se puede ampliar el número de transacciones es relativamente simple. Se utilizan, los duplicados más de la base de datos, las operaciones más pueden ser manejados en paralelo. En otras palabras, esto significa que ahora puede acceder a cualquier número de usuarios (por supuesto en función del número de servidores) simultáneamente en nuestra base de datos. Desafortunadamente, este método ayuda no va a escala bien como los propios datos. Para ser capaz de guardar los datos tanto en la base de datos, un paso adicional es requerida. Este problema se discute en la siguiente sección.

[ editar ] Escala para las entradas de base de datos - Desnormalización

Lo que se quiere lograr con esto es para dividir una base de datos en varios equipos y la capacidad de expansión de cualquier otro equipo. Esto requiere que la base de datos a un cierto grado sin normalizar ser. Bajo Desnormalización se refiere a la retirada deliberada de normalización con el fin de mejorar el comportamiento de tiempo de ejecución de una aplicación de base de datos .

En el curso de desnormalización, la base de datos debe ser fragmentado.

[ editar ] Fragmentación

Se distinguen fragmentación horizontal y vertical.

En la fragmentación horizontal ( Eng. sharding) significa que todos los registros de una relación se divide en varias tablas. Si estas tablas se encuentran en el mismo servidor, entonces por lo general a la partición. Cada tabla puede también estar situado en diferentes servidores. Así, por ejemplo, los datos de la empresa en los EE.UU. se almacenan en un servidor en los EE.UU. y los datos de la empresa con Europa en un servidor en Alemania. Esta división también se conoce como la regionalización.

Fragmentación horizontal no crea redundancia de los datos almacenados, pero las estructuras de comunicación. Si una relación tiene que ser cambiado, entonces no sólo una tabla que ser cambiado, pero todas las tablas debe ser cambiado, los datos de la relación en cuestión se distribuyen. Existe un riesgo de anomalías en las estructuras de datos.

En la fragmentación vertical atributos dependientes (atributos no clave) de una mesa dividida en dos o más grupos. De cada grupo tendrá su propia mesa, se complementará con todos los atributos clave de la tabla original. Esto puede ser útil si los atributos de una relación resultante conjuntos de datos con una longitud de bloque muy grande. Además, si las solicitudes suelen incluir sólo unos pocos atributos, entonces podemos resumir algunos atributos de acceso frecuente en un grupo y resumir el resto en un segundo grupo. La realiza comúnmente golpes con velocidad, porque una cantidad más pequeña de datos desde el disco duro debe ser leído. Los éxitos rara vez se realiza en el resto de atributos no son por lo tanto más rápido, no lento.

¿A qué longitud de frase dividir en varias tablas más pequeñas es útil también depende del sistema de base de datos. Muchos sistemas de base de datos almacena datos en bloques con un tamaño de 4 Kb , 8 KiB o 16 Kb de. Si la longitud media de la oración es ligeramente mayor que 50% de un bloque de datos, sigue siendo mucho espacio no utilizado. Cuando la longitud de bloque media es mayor que el tamaño de bloque, entonces el acceso a los datos es más complejo. Si las gotas se producen junto con otros atributos en una relación, la fragmentación vertical es casi siempre beneficioso.

[ editar ] Particiones

El particionamiento es un caso especial de la fragmentación horizontal.

Grandes conjuntos de datos se pueden administrar más fácilmente si los datos de una relación dividida en varias partes pequeñas (= particiones) y éstos se almacenan por separado. Si una partición de una tabla que se está actualizando, entonces las otras particiones de la tabla está reorganizando al mismo tiempo. Si una partición se detecta un error, entonces esta partición a restaurar desde una copia de seguridad, mientras que los programas pueden acceder a las otras particiones. La mayoría de los vendedores establecidos bases de datos proporcionan particiones, véase, por ejemplo, en DB2 particionado y particiones en MySQL .

La mayoría de los sistemas de bases de datos proporcionan la oportunidad de no apelar a las particiones individuales o ponerse en contacto con todas las particiones con un nombre de tabla.

Al dividir las solicitudes de datos son acelerados. La principal ventaja es la facilidad de administración de toda la tabla.

[ editar ] Referencias

  1. Véase, por ejemplo, Mark D. Hill, "¿Qué es la escalabilidad? en SIGARCH ACM Computer Architecture News, diciembre de 1990, Volumen 18 Número 4, páginas 18-21, (ISSN 0.163-5.964) y Leticia Duboc, David S. Rosenblum, Tony Wicks, "Doctorado simposio: Presentaciones: Un marco para el modelado y análisis escalabilidad de los sistemas de software "en Actas de la 28 ª Conferencia Internacional sobre Ingeniería de Software CISE '06, mayo de 2006. ISBN 1-59593-375-1 , páginas 949-952
  2. Miguel, M., JE Moreira, D. Shiloach, OR Wisniewski (26 de marzo de 2007): Scale-up x Scale-out: Un estudio de caso con Nutch / Lucene . En: Paralela y Distribuida de Procesamiento Symposium, 2007. PDPI .. 2007 IEEE International. Consultado el 23 de marzo Mayo de 2012.
  3. B. Bondi. 2000a características de escalabilidad y su impacto en el rendimiento. En Actas del 2 º Taller Internacional de Software y rendimiento (WOSP '00). ACM, New York, NY, EE.UU., 195-203. Doi = 10.1145/350391.350432 http://doi.acm.org/10.1145/350391.350432
  4. LM Abbott, MT Fisher 2011 Reglas Escalabilidad:. 50 principios de los sitios Web de escala, Indiana: Addison-Wesley, ISBN 978-0-321-75388-5 , pp.12-34
  5. R. Fielding, Gettys J., J. Mogul, Frystyk H., Masinter L., Leach, P. y T. Berners-Lee, la Red Grupo de Trabajo Solicitud de comentarios 2616, de transferencia de hipertexto Protocol-HTTP/1.1, junio de 1999, http: / / www.ietf.org/rfc/rfc2616.txt
  6.   Edgar F. Codd : Un modelo relacional de datos para grandes bancos de datos compartidos . En: Comunicaciones de la ACM. ACM Press, Nueva York 13 Junio ​​de 1970, ISSN 0001-0782 , pp 377-387.

[ editar ] Véase también