Sistemas distribuidos: definición, características y principios básicos

Tabla de contenido:

Sistemas distribuidos: definición, características y principios básicos
Sistemas distribuidos: definición, características y principios básicos
Anonim

Un sistema distribuido en su definición más simple es un grupo de computadoras que trabajan juntas y que el usuario final ve como una sola. Las máquinas comparten un estado común, se ejecutan simultáneamente y pueden operar de forma independiente sin afectar el tiempo de actividad de todo el sistema. La verdad es que administrar dichos sistemas es un tema complejo lleno de trampas.

Resumen del sistema

Sistemas distribuidos
Sistemas distribuidos

El sistema distribuido permite compartir recursos (incluido el software) conectados a la red al mismo tiempo.

Ejemplos de distribución del sistema:

  1. Pila tradicional. Estas bases de datos se almacenan en el sistema de archivos de una máquina. Siempre que el usuario quiere recibir información, se comunica directamente con esta máquina. Para distribuir este sistema de base de datos, debe ejecutarlo en varias PC al mismo tiempo.
  2. Arquitectura distribuida.

Sistema distribuidole permite escalar horizontal y verticalmente. Por ejemplo, la única forma de manejar más tráfico sería actualizar el hardware que ejecuta la base de datos. Esto se llama escalado vertical. El escalado vertical es bueno hasta cierto límite, después del cual incluso el mejor equipo no puede proporcionar el tráfico requerido.

Escalar horizontalmente significa agregar más computadoras, no actualizar el hardware en una. El escalado vertical aumenta el rendimiento a las últimas capacidades de hardware en sistemas distribuidos. Estas oportunidades no son suficientes para las empresas de tecnología con cargas de trabajo moderadas a pesadas. Lo mejor de la escala horizontal es que no hay límites de tamaño. Cuando el rendimiento se degrada, simplemente se agrega otra máquina, lo que, en principio, se puede hacer de forma indefinida.

A nivel corporativo, un sistema de control distribuido a menudo implica varios pasos. En los procesos de negocio en los lugares más eficientes de la red informática empresarial. Por ejemplo, en una distribución típica que usa un modelo de sistema distribuido de tres niveles, el procesamiento de datos se realiza en una PC en la ubicación del usuario, el procesamiento comercial se realiza en una computadora remota y el acceso a la base de datos y el procesamiento de datos se realiza en una computadora completamente diferente. que proporciona acceso centralizado para muchas empresas. Por lo general, este tipo de computación distribuidautiliza el modelo de interacción cliente-servidor.

Tareas principales

Tareas principales
Tareas principales

Las tareas principales de un sistema de control distribuido incluyen:

  1. Transparencia: obtenga una imagen única del sistema sin ocultar la ubicación, el acceso, la migración, la concurrencia, la conmutación por error, la reubicación, la persistencia y los detalles de los recursos para los usuarios.
  2. Apertura: simplifica la configuración y los cambios de la red.
  3. Confiabilidad: en comparación con un solo sistema de control, debe ser confiable, consistente y tener una alta probabilidad de enmascarar errores.
  4. Rendimiento: en comparación con otros modelos, los modelos distribuidos aumentan el rendimiento.
  5. Escalable: estos sistemas de control distribuido deben ser escalables en términos de territorio, administración o tamaño.

Las tareas de los sistemas de distribución incluyen:

  1. La seguridad es un gran problema en un entorno distribuido, especialmente cuando se utilizan redes públicas.
  2. Tolerancia a fallas: puede ser difícil cuando el modelo se construye con componentes poco confiables.
  3. Coordinación y distribución de recursos: puede ser difícil si no existen los protocolos adecuados o las políticas requeridas.

Entorno informático distribuido

Entorno informático distribuido
Entorno informático distribuido

(DCE) es un estándar de la industria ampliamente utilizado que admite este tipo de computación distribuida. En Internet, los proveedores externos ofrecen algunos servicios genéricos,que encajan en este modelo.

La computación grid es un modelo de computación con una arquitectura distribuida de una gran cantidad de computadoras asociadas con la resolución de un problema complejo. En el modelo de grid computing, los servidores o las computadoras personales realizan tareas independientes y están ligeramente conectados entre sí por Internet o redes de baja velocidad.

El proyecto de computación grid más grande es SETI@home, en el que los propietarios de computadoras individuales se ofrecen como voluntarios para realizar algunos de sus ciclos de procesamiento multitarea usando su computadora para el proyecto Search for Extraterrestrial Intelligence (SETI). Este problema informático utiliza miles de ordenadores para descargar y buscar datos de radiotelescopios.

Uno de los primeros usos de la computación grid fue descifrar el código criptográfico por parte de un grupo ahora conocido como distribuido.net. Este grupo también describe su modelo como computación distribuida.

Escalado de base de datos

Escalado de base de datos
Escalado de base de datos

Difundir nueva información de maestro a esclavo no ocurre instantáneamente. De hecho, hay una ventana de tiempo en la que puede obtener información desactualizada. Si este no fuera el caso, el rendimiento de escritura se vería afectado, ya que los sistemas distribuidos tendrían que esperar sincrónicamente a que se propaguen los datos. Vienen con algunos compromisos.

Usando un enfoque de base de datos esclava, es posible escalar horizontalmente el tráfico de lectura hasta cierto punto. Hay muchas opciones aquí. Pero solo necesita dividir el tráfico de escritura en variosservidores porque no puede manejarlo. Una forma es utilizar una estrategia de replicación multimaestro. Allí, en lugar de esclavos, hay varios nodos principales que admiten lectura y escritura.

Otro método se llama fragmentación. Con él, el servidor se divide en varios servidores más pequeños, llamados fragmentos. Estos fragmentos tienen diferentes entradas, se crean reglas sobre qué entradas van en qué fragmento. Es muy importante crear una regla de este tipo que los datos se distribuyan uniformemente. Un posible enfoque para esto es definir rangos de acuerdo con alguna información de registro.

Esta clave de fragmento debe elegirse con mucho cuidado, ya que la carga no siempre es igual a las bases de columnas arbitrarias. El único fragmento que recibe más solicitudes que los demás se llama punto de acceso e intentan evitar que se forme. Una vez divididos, los datos de recalibración se vuelven increíblemente costosos y pueden generar un tiempo de inactividad significativo.

Algoritmos de consenso de base de datos

Algoritmos de consenso de base de datos
Algoritmos de consenso de base de datos

Los DB son difíciles de implementar en los sistemas de seguridad distribuidos porque requieren que cada nodo negocie la interrupción correcta o la acción de confirmación. Esta cualidad se conoce como consenso y es un problema fundamental en la construcción de un sistema de distribución. Lograr el tipo de acuerdo necesario para el problema de "compromiso" es simple si los procesos involucrados y la red son completamente confiables. Sin embargo, los sistemas reales están sujetos a una serie deposibles fallas de los procesos de red, mensajes perdidos, corruptos o duplicados.

Esto plantea un problema y no es posible garantizar que se alcance el consenso correcto dentro de un período de tiempo limitado en una red poco confiable. En la práctica, hay algoritmos que llegan a un consenso con bastante rapidez en una red poco fiable. Cassandra en realidad proporciona transacciones ligeras mediante el uso del algoritmo Paxos para el consenso distribuido.

La computación distribuida es la clave para la afluencia de procesamiento de big data que se ha utilizado en los últimos años. Es un método para dividir una tarea enorme, como 100 mil millones de registros acumulados, de los cuales ninguna computadora es capaz de hacer prácticamente nada por sí misma, en muchas tareas más pequeñas que pueden caber en una sola máquina. El desarrollador divide su gran tarea en muchas más pequeñas, las ejecuta en muchas máquinas en paralelo, recopila los datos de manera adecuada y luego se resuelve el problema original.

Este enfoque le permite escalar horizontalmente: cuando hay una tarea grande, simplemente agregue más nodos al cálculo. Estas tareas han sido realizadas durante muchos años por el modelo de programación MapReduce asociado con la implementación para el procesamiento paralelo y la generación de grandes conjuntos de datos utilizando un algoritmo distribuido en un clúster.

Actualmente, MapReduce está algo desactualizado y trae algunos problemas. Han surgido otras arquitecturas que abordan estos problemas. A saber, Arquitectura Lambda para distribuciónsistemas de procesamiento de flujo. Los avances en esta área han traído nuevas herramientas: Kafka Streams, Apache Spark, Apache Storm, Apache Samza.

Almacenamiento de archivos y sistemas de replicación

Sistemas de replicación y almacenamiento de archivos
Sistemas de replicación y almacenamiento de archivos

Los sistemas de archivos distribuidos se pueden considerar como almacenes de datos distribuidos. Esto es lo mismo que el concepto: almacenar y acceder a una gran cantidad de datos en un grupo de máquinas que son una sola entidad. Por lo general, van de la mano con la computación distribuida.

Por ejemplo, Yahoo es conocido por ejecutar HDFS en más de 42 000 nodos para almacenar 600 petabytes de datos desde 2011. Wikipedia define la diferencia en que los sistemas de archivos distribuidos permiten el acceso a archivos utilizando las mismas interfaces y semántica que los archivos locales, en lugar de una API personalizada como Cassandra Query Language (CQL).

El sistema de archivos distribuidos de Hadoop (HDFS) es un sistema que se utiliza para computar sobre la infraestructura de Hadoop. Ampliamente utilizado, se utiliza para almacenar y replicar archivos grandes (tamaño GB o TB) en muchas máquinas. Su arquitectura consiste principalmente en NameNodes y DataNodes.

NameNodes es responsable de almacenar metadatos sobre el clúster, como qué nodo contiene bloques de archivos. Actúan como coordinadores de la red, averiguando dónde almacenar y copiar archivos mejor y realizando un seguimiento del estado del sistema. Los DataNodes simplemente almacenan archivos y ejecutan comandos como replicación de archivos, escritura nueva yotros.

Como era de esperar, HDFS se utiliza mejor con Hadoop para la informática, ya que proporciona conocimiento de la información de tareas. A continuación, los trabajos especificados se ejecutan en los nodos que almacenan los datos. Esto le permite utilizar la ubicación de los datos: optimiza los cálculos y reduce la cantidad de tráfico en la red.

El sistema de archivos interplanetarios (IPFS) es un nuevo y emocionante protocolo/red de igual a igual para sistemas de archivos distribuidos. Utilizando la tecnología Blockchain, cuenta con una arquitectura completamente descentralizada sin un solo propietario o punto de falla.

IPFS ofrece un sistema de nombres (similar a DNS) llamado IPNS y permite a los usuarios recuperar información fácilmente. Almacena el archivo a través de versiones históricas, al igual que lo hace Git. Esto permite el acceso a todos los estados anteriores del archivo. Todavía está pasando por un gran desarrollo (v0.4 en el momento de escribir este artículo), pero ya ha visto proyectos interesados en construirlo (FileCoin).

Sistema de mensajería

sistema de mensajería
sistema de mensajería

Los sistemas de mensajería proporcionan una ubicación central para almacenar y distribuir mensajes dentro de un sistema común. Le permiten separar la lógica de la aplicación de la comunicación directa con otros sistemas.

Escala conocida: el clúster Kafka de LinkedIn procesó 1 billón de mensajes por día con picos de 4,5 millones de mensajes por segundo.

En términos simples, la plataforma de mensajería funciona así:

  1. Mensajepasa desde la aplicación que potencialmente lo crea, llamada productor, entra en la plataforma y se lee desde múltiples aplicaciones, llamadas consumidores.
  2. Si necesita almacenar un determinado evento en varios lugares, como crear un usuario para una base de datos, almacenamiento, servicio de envío de correo electrónico, entonces la plataforma de mensajería es la forma más limpia de distribuir ese mensaje.

Hay varias plataformas de mensajería populares de primer nivel.

RabbitMQ es un intermediario de mensajes que le permite afinar más el control de sus trayectorias utilizando reglas de enrutamiento y otros parámetros fácilmente configurables. Se le puede llamar un corredor "inteligente" porque tiene mucha lógica y monitorea de cerca los mensajes que pasan a través de él. Proporciona opciones para AP y CP de CAP.

Kafka es un intermediario de mensajes que es un poco menos funcional, ya que no realiza un seguimiento de los mensajes que se han leído y no permite una lógica de enrutamiento compleja. Ayuda a lograr un rendimiento asombroso y representa la mayor promesa en este espacio con el desarrollo activo de sistemas distribuidos por parte de la comunidad de código abierto y el apoyo del equipo de Confluent. Kafka es más popular entre las empresas de alta tecnología.

Aplicaciones de interacción de máquinas

Este sistema de distribución es un grupo de computadoras que trabajan juntas para aparecer como una computadora separada para el usuario final. Estas máquinas están en condiciones generales, funcionandosimultáneamente y puede funcionar de forma independiente sin afectar el tiempo de actividad de todo el sistema.

Si consideras que la base de datos está distribuida, solo si los nodos interactúan entre sí para coordinar sus acciones. En este caso, es algo así como una aplicación que ejecuta su código interno en una red de igual a igual y se clasifica como una aplicación distribuida.

Escala conocida - BitTorrent
Escala conocida - BitTorrent

Ejemplos de dichas aplicaciones:

  1. Escala conocida: BitTorrent inunda 193 000 nodos para el episodio de Game of Thrones.
  2. Tecnología básica de registro de sistemas Blockchain distribuidos.

Los libros mayores distribuidos se pueden considerar como una base de datos inmutable de solo aplicación que se replica, sincroniza y comparte entre todos los nodos de la red de distribución.

La conocida escala, la red Ethereum, tuvo 4,3 millones de transacciones por día el 4 de enero de 2018. Usan el patrón Event Sourcing, que le permite restaurar el estado de la base de datos en cualquier momento.

Blockchain es la tecnología subyacente actual utilizada para los registros distribuidos y en realidad marcó su comienzo. Esta innovación más nueva y más grande en el espacio distribuido creó el primer protocolo de pago realmente distribuido, bitcoin.

Blockchain es un libro mayor distribuido con una lista ordenada de todas las transacciones que han tenido lugar en su red. Las ofertas se agrupan y almacenan en bloques. Toda la cadena de bloques es esencialmente una lista enlazada de bloques. Bloques especificadosson costosos de crear y están estrechamente acoplados entre sí a través de la criptografía. En pocas palabras, cada bloque contiene un hash especial (que comienza con X número de ceros) del contenido del bloque actual (en forma de árbol Merkle) más el hash del bloque anterior. Este hash requiere mucha potencia de CPU.

Ejemplos de sistemas operativos distribuidos

Ejemplos de sistemas operativos distribuidos
Ejemplos de sistemas operativos distribuidos

Los tipos de sistemas aparecen al usuario porque son sistemas de un solo usuario. Comparten su memoria, disco y el usuario no tiene problemas para navegar a través de los datos. El usuario almacena algo en su PC y el archivo se almacena en varias ubicaciones, es decir, computadoras conectadas para que los datos perdidos puedan recuperarse fácilmente.

Ejemplos de sistemas operativos distribuidos:

  1. Servidor de Windows 2003;
  2. Servidor de Windows 2008;
  3. Servidor de Windows 2012;
  4. UbuntuLinux (servidor Apache).

Si cualquier computadora arranca más alto, es decir, si se intercambian muchas solicitudes entre PC individuales, así es como se produce el equilibrio de carga. En este caso, las solicitudes se propagan a la PC vecina. Si la red se vuelve más cargada, entonces se puede expandir agregando más sistemas a la red. El archivo y las carpetas de la red están sincronizados y se utilizan convenciones de nomenclatura para que no se produzcan errores cuando se recuperan los datos.

El almacenamiento en caché también se usa cuando se manipulan datos. Todas las computadoras usan el mismo espacio de nombres para nombrar archivos. Peroel sistema de archivos es válido para todas las computadoras. Si hay actualizaciones en el archivo, se escribe en una computadora y los cambios se propagan a todas las computadoras, por lo que el archivo tiene el mismo aspecto.

Los archivos se bloquean durante el proceso de lectura/escritura, por lo que no hay punto muerto entre diferentes computadoras. También se producen sesiones, como leer, escribir archivos en una sesión y cerrar la sesión, y luego otro usuario puede hacer lo mismo y así sucesivamente.

Beneficios de usar

Un sistema operativo diseñado para facilitar el día a día de las personas. Para los beneficios y necesidades del usuario, el sistema operativo puede ser de un solo usuario o distribuido. En un sistema de recursos distribuidos, muchas computadoras están conectadas entre sí y comparten sus recursos.

Beneficios de hacer esto:

  1. Si una PC en dicho sistema está defectuosa o dañada, otro nodo o computadora se encargará de ello.
  2. Se pueden agregar fácilmente más recursos.
  3. Los recursos, como las impresoras, pueden funcionar en varias computadoras.

Este es un resumen sobre el sistema de distribución, por qué se usa. Algunas cosas importantes para recordar: son complejos y se eligen por escala y precio y son más difíciles de trabajar. Estos sistemas se distribuyen en varias categorías de almacenamiento: computación, sistemas de archivos y mensajería, registros, aplicaciones. Y todo esto es muy superficial sobre un sistema de información complejo.

Recomendado: