Cosecha, rendimiento y sistemas tolerantes escalables: resumen

Este artículo presenta un resumen del documento “Cosecha, rendimiento y sistemas tolerantes escalables” publicado por Eric Brewer & Amando Fox en 1999. Todas las citas no atribuidas son de este documento.

El documento trata sobre las compensaciones entre consistencia y disponibilidad (CAP) para sistemas grandes. Es muy fácil señalar CAP y afirmar que ningún sistema puede tener consistencia y disponibilidad.

Pero hay una trampa. El CAP se ha malinterpretado de diversas formas. Como explica Coda Hale en su excelente publicación de blog "No se puede sacrificar la tolerancia a la partición":

De la consistencia, disponibilidad y tolerancia de partición del teorema CAP, la tolerancia de partición es obligatoria en los sistemas distribuidos. No se puede no elegirlo. En lugar de CAP, debe pensar en su disponibilidad en términos de rendimiento (porcentaje de solicitudes respondidas con éxito) y recolección (porcentaje de datos requeridos realmente incluidos en las respuestas) y cuál de estos dos su sistema sacrificará cuando ocurran fallas.

El documento se centra en aumentar la disponibilidad de sistemas a gran escala mediante la tolerancia a fallos, la contención y el aislamiento:

Suponemos que los clientes realizan consultas a los servidores, en cuyo caso existen al menos dos métricas para el correcto comportamiento: rendimiento, que es la probabilidad de completar una solicitud, y cosecha, que mide la fracción de los datos reflejados en la respuesta, es decir, integridad de la respuesta a la consulta.

Las dos métricas, cosecha y rendimiento, se pueden resumir de la siguiente manera:

  • Cosecha : datos en respuesta / datos totales

    Por ejemplo: si uno de los nodos está inactivo en un clúster de 100 nodos, la cosecha es del 99% durante la duración de la falla.

  • Rendimiento : solicitudes completadas con éxito / número total de solicitudes

    Nota: el rendimiento es diferente al tiempo de actividad. El rendimiento se ocupa de la cantidad de solicitudes, no solo del tiempo que el sistema no pudo responder a las solicitudes.

El documento sostiene que hay ciertos sistemas que requieren respuestas perfectas a las consultas en todo momento. Además, existen sistemas que pueden tolerar respuestas imperfectas de vez en cuando.

Para aumentar la disponibilidad general de nuestros sistemas, debemos pensar detenidamente en las garantías de consistencia y disponibilidad necesarias que debe proporcionar.

Negociar cosecha por rendimiento: disponibilidad probabilística

Casi todos los sistemas son probabilísticos, se den cuenta o no. En particular, cualquier sistema que esté 100% disponible bajo fallas únicas está disponible probabilísticamente en general (ya que existe una probabilidad distinta de cero de fallas múltiples)

El artículo habla sobre la comprensión de la naturaleza probabilística de la disponibilidad. Esto ayuda a comprender y limitar el impacto de las fallas al tomar decisiones sobre lo que debe estar disponible y qué tipo de fallas puede tratar el sistema.

Describen la degradación lineal de la cosecha en caso de fallas de múltiples nodos. La cosecha es directamente proporcional al número de nodos que funcionan correctamente. Por lo tanto, disminuye / aumenta linealmente.

Se sugieren dos estrategias para aumentar el rendimiento:

  1. Distribución aleatoria de datos en los nodos.

    Si uno de los nodos falla, el comportamiento de falla del caso promedio y del peor de los casos no cambia. Sin embargo, si la distribución no es aleatoria, dependiendo del tipo de datos, el impacto de una falla puede variar.

    Por ejemplo, si solo uno de los nodos almacenó información relacionada con el saldo de la cuenta de un usuario, todo el sistema bancario no podrá funcionar.

  2. Replicando los datos más importantes

    Esto reduce el impacto en caso de que uno de los nodos que contiene un subconjunto de datos de alta prioridad falle.

    También mejora la cosecha.

Otra observación notable hecha en el documento es que es posible replicar todos sus datos. No hace mucho para mejorar su cosecha / rendimiento, pero aumenta sustancialmente el costo de operación. Esto se debe a que Internet funciona según los mejores protocolos que nunca pueden garantizar el 100% de cosecha / rendimiento.

Aplicación de descomposición y mecanismos ortogonales

La segunda estrategia se centra en los beneficios del diseño de sistemas ortogonales.

Comienza afirmando que los grandes sistemas se componen de subsistemas que no pueden tolerar fallas. Pero fallan de una manera que permite que todo el sistema continúe funcionando con algún impacto en la utilidad.

El beneficio real es la capacidad de aprovisionar la gestión de estado de cada subsistema por separado, proporcionando una coherencia sólida o un estado persistente solo para los subsistemas que lo necesitan, no para toda la aplicación. Los ahorros pueden ser significativos si solo unos pocos subsistemas pequeños requieren la complejidad adicional.

El documento establece que los componentes ortogonales son completamente independientes entre sí. No tienen una interfaz de tiempo de ejecución con otros componentes, a menos que haya una interfaz de configuración. Esto permite que cada componente individual falle de forma independiente y minimiza su impacto en el sistema en general.

La composición de los subsistemas ortogonales desplaza la carga de la verificación de interacciones posiblemente dañinas del tiempo de ejecución al tiempo de compilación, y el despliegue de mecanismos de protección ortogonales mejora la solidez de las interacciones en tiempo de ejecución que ocurren, al proporcionar una mejor contención de fallas.

El objetivo de este artículo fue motivar la investigación en el campo del diseño de sistemas a gran escala tolerantes a fallas y altamente disponibles.

Además, pensar detenidamente en la coherencia y disponibilidad garantiza que la aplicación debe proporcionar. Además de las compensaciones que puede hacer en términos de cosecha contra rendimiento.

Si disfrutó de este documento, presione el botón de aplaudir para que más personas lo vean. Gracias.

PD: si llegaste hasta aquí y te gustaría recibir un correo cada vez que publique una de estas publicaciones, regístrate aquí.