Está en la página 1de 10

1.

3 Sistema Distribuido

Un sistema distribuido es un conjunto de programas informáticos que utilizan recursos


computacionales en varios nodos de cálculo distintos para lograr un objetivo
compartido común. Este tipo de sistemas, también denominados "computación
distribuida" o "bases de datos distribuidas", usan nodos distintos para comunicarse y
sincronizarse a través de una red común. Estos nodos suelen representar dispositivos
de hardware físicos diferentes, pero también pueden representar procesos de software
diferentes u otros sistemas encapsulados recursivos. La finalidad de los sistemas
distribuidos es eliminar los cuellos de botella o los puntos de error centrales de un
sistema.

Los sistemas de computación distribuida tienen las características siguientes:

Recursos compartidos: Los sistemas distribuidos pueden compartir hardware, software


o datos.

Procesamiento simultáneo: Varias máquinas pueden procesar la misma función a la


vez.

Escalabilidad: La capacidad computacional y de procesamiento puede escalarse hacia


arriba según sea necesario cuando se añaden máquinas adicionales.

Detección de errores: Los errores se pueden detectar más fácilmente.

Transparencia: Un nodo puede acceder a otros nodos del sistema y comunicarse con
ellos.

Ventajas, inconvenientes y riesgos de los sistemas distribuidos

Los sistemas distribuidos suelen contribuir a mejorar la fiabilidad y el rendimiento del


sistema. La fiabilidad se mejora eliminando los puntos de error centrales y los cuellos
de botella. Los nodos de un sistema distribuido ofrecen redundancia, de modo que, si
un nodo falla, hay otros que pueden sustituirlos y reparar el error. El rendimiento se
mejora porque los nodos pueden escalarse fácilmente en sentido horizontal y vertical.
Si un sistema se somete a una carga extensiva, pueden añadirse nodos adicionales
para ayudar a absorber dicha carga. También es posible aumentar la capacidad de un
nodo concreto para gestionar una carga extensiva.

Sin embargo, uno de los inconvenientes que presentan estos sistemas puede ser la
"expansión del desarrollo", que implica que los sistemas acaban siendo excesivamente
complejos y difíciles de mantener. Esta mayor complejidad puede complicar a los
equipos las tareas de organización, gestión y mejora de estos sistemas. Parte de la
dificultad puede ser entender la relación que hay entre los distintos componentes o
quién posee un componente de software concreto. Esto hace que sea difícil saber
cómo modificar los componentes para maximizar su rendimiento y evitar que ello tenga
un impacto negativo no solo en los componentes dependientes, sino también en los
clientes. Cuando un sistema distribuido tiene varios repositorios, puede que sea
necesario utilizar herramientas especializadas como Atlassian Compass para gestionar
y organizar el código del sistema.

Casos de uso de los sistemas distribuidos

Muchas aplicaciones modernas utilizan sistemas distribuidos. Las aplicaciones web y


móviles con mucho tráfico son sistemas distribuidos. Los usuarios se conectan
siguiendo un modelo cliente-servidor, donde el cliente es un navegador web o una
aplicación móvil. El servidor es pues su propio sistema distribuido. Los servidores web
modernos siguen un patrón de sistema por capas. Se utiliza un equilibrador de carga
para delegar las solicitudes a muchos nodos lógicos de servidor que se comunican a
través de sistemas de cola de mensajes.

Kubernetes es una herramienta muy utilizada en los sistemas distribuidos porque


puede crear un sistema distribuido a partir de una colección de contenedores. Los
contenedores crean nodos del sistema distribuido y Kubernetes orquesta la
comunicación de red entre esos nodos, además de gestionar el escalado dinámico
horizontal y vertical de los nodos en el sistema.

Objetivos de un sistema distribuido

Un sistema distribuido tiene como objetivos elevar la eficiencia y evitar los errores y los
cuellos de botella.

Este tipo de sistemas consisten, básicamente, en un conjunto de programas


informáticos entre los cuales se distribuyen las tareas. Dichos programas son
albergados y ejecutados en nodos, que en conjunto conforman clústers. Cada nodo es
capaz de ejecutar aplicaciones diferentes, correr distintos sistemas operativos y
gestionar diversas bases de datos y servidores.

La idea es que, distribuyendo el trabajo, todos los nodos colaboren para alcanzar un
mismo objetivo en común, mayor y más relevante que la suma de todas las partes.

Debido a esto, si bien cada nodo puede funcionar de forma independiente, muchas
veces se los puede poner a procesar una misma tarea en conjunto.

Algunos de los principales objetivos de los sistemas distribuidos incluyen:

Disponibilidad: Garantizar que el sistema esté disponible y funcional en todo


momento, incluso si algunos de sus componentes o nodos experimentan fallas. Esto se
logra mediante la redundancia y la replicación de datos y servicios en diferentes
permanecen.
Escalabilidad: Permitir que el sistema se adapte eficientemente a cambios en la carga
de trabajo o en los recursos disponibles. Esto podría implicar agregar o quitar nodos
según sea necesario para mantener el rendimiento y la capacidad de respuesta.

Tolerancia a fallos: Diseñar el sistema para que pueda funcionar correctamente a


pesar de fallos parciales o temporales en los componentes individuales. La tolerancia a
fallos puede incluir la recuperación automática, la detección de fallos y la reasignación
de tareas.

Rendimiento: Mejorar la velocidad y eficiencia del sistema distribuido en comparación


con un sistema centralizado. Esto implica la optimización de la comunicación y la
minimización de la latencia entre los nodos.

Consistencia: Garantizar que los datos y recursos compartidos mantengan un estado


coherente en todo el sistema, incluso cuando múltiples usuarios o nodos intenten
acceder o modificar estos recursos simultáneamente.

Transparencia: Proporcionar a los usuarios y aplicaciones una vista unificada del


sistema, ocultando la complejidad de la distribución y la comunicación entre nodos.
Esto puede incluir la transparencia de acceso, ubicación, migración y replicación.

Eficiencia en el uso de recursos: Use eficientemente los recursos disponibles, como


el ancho de banda de red, la capacidad de almacenamiento y el poder de
procesamiento, para lograr un rendimiento óptimo y reducir los costos operativos.

Seguridad: Garantizar la integridad, confidencialidad y autenticidad de los datos y las


comunicaciones en el sistema distribuido. Esto implica implementar mecanismos de
autenticación, cifrado y control de acceso.

Interoperabilidad: Permitir que diferentes sistemas distribuidos o componentes


desarrollados por diferentes proveedores funcionen juntos de manera coherente. Esto
se logra mediante el uso de estándares y protocolos comunes.

Facilidad de desarrollo y mantenimiento: Diseñar el sistema de manera que sea


manejable en términos de desarrollo de software, implementación y mantenimiento
continuo. Esto incluye la capacidad de actualizar componentes sin interrumpir el
funcionamiento general.

Estos objetivos pueden variar según las necesidades específicas de cada sistema
distribuido, pero en general, buscan optimizar la utilización de recursos, mejorar la
confiabilidad y la eficiencia, y proporcionar una experiencia transparente y coherente
para los usuarios y aplicaciones que interactúan con el sistema.
Generalmente, cuando las aplicaciones se ejecutan sobre una única unidad
informática, existe la posibilidad de que, con el tiempo, los niveles de potencia o de
almacenamiento requeridos empiecen a irse de las manos.

Caracteristicas de los sistemas Distribuidos.

Los sistemas distribuidos son piezas de software que sirven para coordinar las
acciones de varias computadoras. Esta coordinación se logra mediante el intercambio
de mensajes, es decir, con trozos de datos que transmiten información.

Los sistemas distribuidos requieren componentes concurrentes, una red de


comunicación y un mecanismo de sincronización. Permiten compartir recursos,
incluyendo el software, por los sistemas conectados a una red. Por tanto, el sistema se
basa en una red que conecta las computadoras y maneja el enrutamiento de los
mensajes.

Los sistemas distribuidos son piezas de software que sirven para coordinar las
acciones de varias computadoras. Esta coordinación se logra mediante el intercambio
de mensajes, es decir, con trozos de datos que transmiten información.

Los sistemas distribuidos requieren componentes concurrentes, una red de


comunicación y un mecanismo de sincronización. Permiten compartir recursos,
incluyendo el software, por los sistemas conectados a una red. Por tanto, el sistema se
basa en una red que conecta las computadoras y maneja el enrutamiento de los
mensajes.

La computación distribuida es un área de la informática que se encarga de analizar los


sistemas distribuidos. El programa informático que se ejecuta en un sistema distribuido
se denomina programa distribuido.

En un contexto donde pueden existir centenares o millares de computadoras, que es


una proporción común en las grandes empresas de Internet, es muy común que haya
fallas de los componentes, sean de hardware, red, discos, etc., y el sistema debe estar
preparado para afrontarlas en todo momento.

Distribución de datos

La distribución es clave para poder manejar conglomerados de datos muy grandes. Es


necesaria para lograr escalabilidad, que son los medios para mantener un desempeño
estable cuando los cúmulos de datos crecen al agregar nuevos recursos al sistema.

Por otro lado, la distribución presenta una serie de problemas técnicos que hacen que
el diseño e implementación de un almacenamiento y cómputo distribuido sean
importantes de considerar. Un punto a tomar en cuenta es el riesgo de posibles fallos.
Características de los sistemas distribuidos

Compatibilidad
Los dispositivos pueden funcionar con diferentes sistemas operativos. Esto no impide
que puedan ofrecer siempre los mismos servicios a los usuarios. Por tal razón, todos
los dispositivos conectados son compatibles entre sí.

Otro tema fundamental es el diseño del software, porque este también es compatible
con todos los sistemas y usuarios que se tienen en cada computadora.

Tolerancia a fallos
Al ser una sola red con muchas computadoras, si falla alguno de sus componentes, los
demás podrán seguir efectuando su función cabalmente, evitando los errores
rápidamente.
Por tal razón, los sistemas distribuidos suelen brindar mucha confianza cuando se
trabaja con ellos, porque es bastante raro que falle el sistema completamente, porque
las tareas no residen en un solo aparato, sino en diferentes equipos.

Middleware y API
Los diferentes procesadores usan un middleware de distribución, ayudando a compartir
diferentes recursos y capacidades para brindar a los usuarios una red coherente e
integrada. También ofrece a las aplicaciones una serie de servicios, como seguridad y
recuperación de fallos.

Actualmente, se escucha más sobre interfaces de programación de aplicaciones (API),


que funcionan como puerta de enlace por donde las aplicaciones pueden comunicarse.
Las aplicaciones no necesitan saber nada sobre otras aplicaciones, excepto su API

Tipos de sistemas distribuidos

Computación en cluster
Es un conjunto de computadoras similares conectadas a través de una red de área
local de alta velocidad. Se usa frecuentemente para la programación en paralelo,
donde un solo programa intensivo en cómputo se ejecuta en paralelo en varias
computadoras.

Cada cluster consiste de un conjunto de nodos de cómputo que son monitoreados y


administrados por uno o más nodos llamados maestros.

Computación en red
Se compone de nodos con marcadas diferencias en hardware y tecnología de red. La
tendencia actual a tener una configuración específica de nodos para ciertas tareas ha
llevado a que haya una mayor diversidad, que es lo más frecuente en la computación
en red.

Computación en la nube
Es un conjunto de recursos virtualizados alojados en el centro de datos de un
proveedor de la nube. Los clientes pueden establecer una infraestructura virtualizada
para aprovechar una variedad de servicios en la nube.

Para el usuario, pareciera que está alquilando su propia computadora exclusiva. Sin
embargo, en realidad es probable que la esté compartiendo con otros clientes. Lo
mismo se aplica al almacenamiento virtual.

Estos recursos virtualizados pueden configurarse dinámicamente, permitiendo así la


escalabilidad. Si se necesitan más recursos informáticos, el sistema puede adquirir
más
Objetivos

Compartir recursos
Sean instalaciones de almacenamiento, archivos de datos, servicios o redes, es posible
que se desee compartir estos recursos entre las aplicaciones, por simple economía.

Resulta mucho más barato tener una instalación de almacenamiento compartida entre
múltiples aplicaciones, que tener que comprar y mantener almacenamiento para cada
una por separado.

Abstracción
Para ocultar que los procesos y recursos se encuentran distribuidos en varias
computadoras, posiblemente diseminadas geográficamente. Es decir, los procesos y
recursos quedan abstraídos del usuario.

Apertura
Indica básicamente que un sistema distribuido esté erigido con elementos que se
puedan integrar con facilidad a otros sistemas. Cumpliendo con las reglas
normalizadas, cualquier proceso con esa interfaz puede comunicarse con otro proceso
con la misma interfaz.

Interoperabilidad y portabilidad
Se refiere cuando dos sistemas de diferentes fabricantes pueden funcionar en conjunto.
La portabilidad determina hasta qué punto una aplicación realizada para el sistema A
pueda funcionar en el sistema B sin modificaciones.

Escalabilidad
Es necesaria cuando hay un aumento de usuarios que necesitan más recursos. Un
buen ejemplo es el aumento de la audiencia de Netflix cada viernes por la noche.

Significa agregar dinámicamente más recursos, tal como aumentar la capacidad de la


red permitiendo una mayor transmisión de video y reducirla una vez que el consumo se
haya normalizado.
Aplicaciones

Máquina virtual Erlang

El paquete de software LYME se basa en Erlang y ofrece una alternativa a


LAMP. Shmuel Csaba Otto Traian / CC BY-SA Erlang es un lenguaje funcional
que tiene una gran semántica para la concurrencia, distribución y tolerancia a fallas.
Una máquina virtual Erlang maneja la distribución de una aplicación Erlang.

Este modelo funciona teniendo muchos procesos aislados, todos con la capacidad de
comunicarse entre sí a través de un sistema incorporado de transmisión de mensajes.

La máquina virtual de Erlang se puede conectar a otras máquinas virtuales que se


encuentren en diferentes lugares. Este enjambre de máquinas virtuales ejecuta una
sola aplicación, manejando las fallas de una máquina programando su ejecución en
otro nodo.
BitTorrent

Es uno de los protocolos más utilizados para transferir archivos grandes en la web. La
idea principal es facilitar la transferencia de archivos entre diferentes pares en la red sin
tener que pasar por un servidor principal.

Al usar un cliente BitTorrent, se puede conectar a múltiples computadoras en todo el


mundo para descargar un archivo. Una computadora que actúa como coordinadora
ayuda a mostrar los nodos en la red que tienen el archivo que se desea.

BitTorrent permite alojar archivos de forma voluntaria y subirlos para otros usuarios que
los deseen. Es tan popular porque fue el primero de su tipo en ofrecer incentivos por
contribuir a la red.

Ventajas

– Se pueden agregar fácilmente más nodos al sistema distribuido, es decir, se puede


escalar según sea necesario.

– Todos los nodos en el sistema distribuido están conectados entre sí. Por tanto, cada
uno de los nodos puede compartir datos fácilmente con los otros nodos.

– Recursos como las impresoras se pueden compartir con múltiples nodos en lugar de
restringirse a uno solo.
– La falla de un nodo no conduce a la falla de todo el sistema distribuido. Los otros
nodos aún se pueden comunicar entre sí.

Desventajas

– Pueden perderse algunos mensajes y datos en la red al pasar de un nodo a otro.

– Es difícil proporcionar una seguridad adecuada en los sistemas distribuidos porque


tanto los nodos como las conexiones deben asegurarse.

– Puede ocurrir una sobrecarga en la red si todos los nodos del sistema distribuido
intentan enviar datos a la vez.

– La base de datos conectada a los sistemas distribuidos es bastante complicada y


difícil de manejar en comparación con un sistema de usuario único.

Ejemplos de sistemas distribuidos

Los sistemas distribuidos se pueden utilizar en una gran cantidad de casos, como los
sistemas de banca electrónica, los juegos en línea multijugador masivos y las redes de
sensores.

StackPath
Utiliza un sistema distribuido particularmente grande para impulsar su servicio de red
de entrega de contenido. Cada uno de sus puntos de presencia (PoP) tiene nodos,
formando un sistema distribuido a nivel mundial,almacena el contenido solicitado más
recientemente y con más frecuencia en las ubicaciones más cercanas al sitio que se
está utilizando.

Al interconectar computadoras virtuales, además de aprovechar la velocidad y agilidad


de una informática de punta, el sistema puede manejar muy rápidamente miles de
solicitudes simultáneas.

Internet
Es el mayor sistema distribuido del mundo. Cualquier usuario siente como si fuera un
solo sistema, aunque está compuesto por millones de computadoras.

Mediante el concepto de abstracción no se tiene idea sobre dónde están almacenados


los datos, cuántos servidores están involucrados o cómo llega la información al
navegador. El navegador disuelve la complejidad de Internet.

Esto se aplica también a aplicaciones tales como el correo electrónico Gmail o


cualquier otra aplicación que se pueda usar. Todas las personas interactúan
diariamente con aplicaciones distribuidas.

También podría gustarte