Caché distribuido esas cosas

En los artículos anteriores, desde una perspectiva práctica, se explicó la aplicación, tolerancia a desastres, monitoreo, etc. de memcached . Sin embargo, hay una falta de explicación teórica y análisis de principios. Este artículo se presentará desde una perspectiva teórica, para que todos tengan una comprensión macro de "caché distribuida, nosql" y otras tecnologías para su posterior estudio y uso. Al crear aplicaciones web a gran escala, se puede decir que la tecnología de almacenamiento en caché es imprescindible, y la necesidad de aprendizaje es evidente.

Descripción general de la caché distribuida

1.1 Características de la caché distribuida

La caché distribuida tiene las siguientes características:
1) Alto rendimiento: cuando las bases de datos tradicionales enfrentan acceso a datos a gran escala, la E / S de disco a menudo se convierte en un cuello de botella en el rendimiento, lo que resulta en demoras excesivas en la respuesta. La caché distribuida usa memoria de alta velocidad como medio de almacenamiento para objetos de datos, y los datos son clave / value Almacenamiento de formularios, idealmente, se puede obtener un rendimiento de lectura y escritura a nivel de DRAM;
2) Escalabilidad dinámica: admite la expansión elástica, aumentando o reduciendo dinámicamente los nodos para responder a la carga cambiante de acceso a los datos, proporcionando un rendimiento y escalabilidad predecibles; al mismo tiempo, maximiza la utilización de recursos;
3) Alta disponibilidad: la disponibilidad incluye dos aspectos: disponibilidad de datos y disponibilidad del servicio. La alta disponibilidad se logra con base en un mecanismo de redundancia, sin un solo punto de falla, detección automática de fallas, implementación transparente de la conmutación por error y sin falla del servidor. interrupción o pérdida de datos Equilibre automáticamente las particiones de datos durante la expansión dinámica, al tiempo que garantiza la disponibilidad continua de los servicios de caché;
4) Facilidad de uso: proporciona una única vista de administración y datos; la interfaz API es simple y no tiene nada que ver con la topología; no se requiere configuración manual para expansión dinámica o recuperación de fallas; selección automática de nodos de respaldo; la mayoría de los sistemas de caché proporcionan una consola de gestión gráfica, para facilitar el mantenimiento unificado;
5) Ejecución de código distribuido: el código de la tarea se transfiere a cada nodo de datos para la ejecución en paralelo, y el cliente agrega y devuelve los resultados, evitando así el movimiento y la transmisión de datos en caché. La última especificación de cuadrícula de datos de Java JSR-347 Código distribuido Se han agregado soporte de ejecución y API Map / Reduce Los principales productos de caché distribuida, como IBM WebSphere eXtreme Scale, VMware GemFire, GigaSpaces XAP y Red Hat Infinispan, también son compatibles con este nuevo modelo de programación.
1.2 Escenarios de aplicación típicos
Los escenarios de aplicación típicos del almacenamiento en caché distribuido se pueden dividir en las siguientes categorías:
1) Almacenamiento en caché de páginas: se utiliza para almacenar en caché los fragmentos de contenido de las páginas web, incluidos HTML, CSS e imágenes, que se utilizan principalmente en sitios de redes sociales;
2) Almacenamiento en caché de objetos de aplicación: el sistema de almacenamiento en caché sirve como caché de segundo nivel del marco ORM para proporcionar servicios externos, con el propósito de reducir la presión de carga de la base de datos y acelerar el acceso a la aplicación;
3) Caché de estado. La caché incluye el estado de la sesión de sesión y los datos de estado durante la expansión horizontal de la aplicación. Estos datos generalmente son difíciles de recuperar y requieren alta disponibilidad y se utilizan principalmente en clústeres de alta disponibilidad;
4) Procesamiento en paralelo: por lo general, implica una gran cantidad de resultados de cálculo intermedios que deben compartirse;
5) Procesamiento de eventos: la caché distribuida proporciona tecnología de procesamiento de consultas continuo para que los flujos de eventos cumplan con los requisitos en tiempo real;
6) Procesamiento de transacciones extremo: la caché distribuida proporciona soluciones de alto rendimiento y baja latencia para aplicaciones transaccionales, admite un alto procesamiento de solicitudes de transacciones simultáneas y se utiliza principalmente en ferrocarriles, servicios financieros y telecomunicaciones.
1.3 Desarrollo de caché distribuida
La caché distribuida ha pasado por múltiples etapas de desarrollo, desde la caché local inicial hasta la plataforma de caché elástica y la plataforma de aplicación elástica. El objetivo es desarrollar en la dirección de construir un sistema mejor distribuido (como se muestra en la figura siguiente).

1) Caché local: los datos se almacenan en el espacio de memoria donde se encuentra el código de la aplicación. La ventaja es que puede proporcionar un acceso rápido a los datos; la desventaja es que los datos no se pueden distribuir ni compartir, y no hay tolerancia a fallas. procesamiento Típico, como Cache4j;


2) Sistema de caché distribuida: los datos se distribuyen y almacenan entre un número fijo de nodos de clúster. La ventaja es que la capacidad de la caché se puede expandir (expansión estática); la desventaja es que se requiere una gran cantidad de configuraciones durante el proceso de expansión, y no hay un mecanismo de tolerancia a fallas Típico, como Memcached ;


3) Plataforma de almacenamiento en caché elástico: los datos se distribuyen y almacenan entre los nodos del clúster, y la alta disponibilidad se logra con base en un mecanismo de redundancia. La ventaja es que se puede expandir dinámicamente y tiene tolerancia a fallas; la desventaja es que la replicación y el respaldo tendrán una cierto impacto en el rendimiento del sistema Típico, como el almacenamiento en caché de Windows Appfabric ;


4) Plataforma de aplicación elástica: la plataforma de aplicación elástica representa la dirección de desarrollo futura del sistema de caché distribuida en el entorno de la nube. En pocas palabras, la plataforma de aplicación elástica es una combinación de caché elástica y ejecución de código, que transfiere el código de lógica empresarial al nodo. donde se ubican los datos para su ejecución, lo que puede reducir en gran medida la sobrecarga de transmisión de datos y mejorar el rendimiento del sistema. Típico, como GigaSpaces XAP .

1.4 Caché distribuido y NoSQL
NoSQL, también conocido como Not Only Sql, se refiere principalmente a no relacionales, distribuidos, y el modo de diseño de base de datos escalable horizontalmente. NoSQL abandona la estricta coherencia de transacciones y las limitaciones de paradigma de las bases de datos relacionales tradicionales, y adopta un modelo de coherencia débil. En comparación con los sistemas NoSQL, las bases de datos tradicionales son difíciles de cumplir con los requisitos de almacenamiento de datos de aplicaciones en el entorno de nube, que se reflejan específicamente en los siguientes tres aspectos:
1) Según la teoría CAP, los tres elementos de consistencia, disponibilidad y tolerancia de partición pueden cumplir como máximo dos al mismo tiempo, y es imposible equilibrar los tres. gran cantidad de aplicaciones web implementadas en la plataforma en la nube La prioridad de disponibilidad de datos y tolerancia a fallas de partición suele ser más alta, por lo que generalmente se elige para relajar adecuadamente las restricciones de coherencia. Los requisitos de coherencia de transacciones de las bases de datos tradicionales restringen la realización de
escalabilidad horizontal y alta tecnologías de disponibilidad; 2) Las bases de datos tradicionales son difíciles de adaptar al nuevo modo de acceso al almacenamiento de datos. Hay una gran cantidad de datos semiestructurados en sitios Web 2.0 y plataformas en la nube, como datos de sesión de usuario, datos transaccionales urgentes y Datos de tareas computacionalmente intensivos. Estos datos de estado son más adecuados para el almacenamiento en forma de clave / valor. No requieren las complicadas funciones de consulta y gestión proporcionadas por RDBMS;
3) NoSQL proporciona velocidades de lectura y escritura de baja latencia y admite la expansión horizontal. Estas características son esenciales para las plataformas en la nube con solicitudes masivas de acceso a datos. Los datos relacionales tradicionales no pueden proporcionar el mismo rendimiento y la capacidad de la base de datos de memoria es limitada Y no tiene la capacidad de expansión. Como una forma de implementación importante de NoSQL, el almacenamiento en caché distribuido puede proporcionar plataformas en la nube con almacenamiento de estado de alta disponibilidad y servicios de aceleración de aplicaciones escalables, y no existe un límite claro con otros sistemas NoSQL. El acceso a fallas del sistema es impredecible, para abordar mejor estos desafíos, arquitectura de software de aplicación comúnmente utilizada en el diseño sin estado, una gran cantidad de información de estado ya no es administrada por componentes, contenedores o plataforma, sino que se paga directamente
Servicio de caché distribuido o sistema NoSQL.
1.5 Caché distribuido y procesamiento de transacciones extremas

Con el mayor desarrollo de la computación en la nube y la Web 2.0, muchas empresas u organizaciones a menudo enfrentan demandas sin precedentes: millones de accesos de usuarios concurrentes, miles de procesamiento de transacciones concurrentes por segundo, elasticidad y escalabilidad flexibles, baja latencia y disponibilidad 7 × 24 × 365, etc. . Las aplicaciones transaccionales tradicionales se enfrentan a una escala extrema de procesamiento de transacciones concurrentes, y han aparecido aplicaciones de procesamiento de transacciones extremas, típicamente sistemas de emisión de boletos de ferrocarril. Wikipedia cree que el procesamiento de transacciones extremo es más de 500 transacciones o más de 10,000 procesamiento de transacciones de acceso concurrente. Gartner define el procesamiento de transacciones extremo (procesamiento extremo de transacciones, denominado XTP) como un modo de aplicación que admite el desarrollo, implementación, administración y mantenimiento de aplicaciones transaccionales. Sus características son Exigencia extrema de rendimiento, escalabilidad, disponibilidad, capacidad de administración, etc. Gartner predice en su informe que la escala de aplicaciones de procesamiento de transacciones extremas aumentará del 10% en 2005 al 20% en 2010, y el procesamiento de transacciones extremas La tecnología es una tecnología de moda en los próximos 5 a 10 años. La introducción del procesamiento de transacciones extremas sin duda ha traído nuevos desafíos a la arquitectura web tradicional de tres niveles. Es decir, cómo utilizar plataformas de hardware y software estandarizadas y baratas para la gran capacidad, las aplicaciones de procesamiento de transacciones críticas para el negocio brindan un buen soporte. Como tecnología XTP clave, el almacenamiento en caché distribuido puede proporcionar un alto rendimiento y soluciones técnicas de baja latencia para aplicaciones transaccionales. Su mecanismo de escritura diferida) puede proporcionar un tiempo de respuesta más corto, al tiempo que reduce en gran medida la carga de procesamiento de transacciones de la base de datos, la arquitectura basada en eventos por etapas (arquitectura dirigida por eventos por etapas) puede admitir a gran escala, altas solicitudes de procesamiento de transacciones concurrentes Además, caché distribuido en Administrar transacciones en memoria y brindar garantías de consistencia de datos, y utilizar tecnología de replicación de datos para lograr alta disponibilidad, con una mejor combinación de escalabilidad y desempeño.



  Artículos relacionados recomendados

  Sobre la selección y uso de NoSQL

 Punto único de falla y equilibrio de carga en Memcached

supervisión del rendimiento de memcached

Utilice Memcached en la plataforma Windows .NET

 Explicación popular de "equilibrio de carga y clúster"

Supongo que te gusta

Origin blog.csdn.net/dinglang_2009/article/details/9071075
Recomendado
Clasificación