Informe Grupal Sistemas Distribuidos
Informe Grupal Sistemas Distribuidos
Presentado por :
Pucallpa – Perú
2021
1
Índice
1.1 INTRODUCCIÓN 3
1.2 EJEMPLOS DE SISTEMAS DISTRIBUIDOS 5
1.2.1 BUSQUEDA WEB 6
1.2.2 JUEGOS EN LINEA MULTIJUGADOR MASIVO 7
1.2.3 COMERCIO FINANCIERO 8
1.3 TENDENCIAS EN SISTEMAS DISTRIBUIDOS 9
1.3.1 REDES OMNIPRESENTES E INTERNET MODERNO 9
1.3.2 COMPUTACION MOVIL Y UBICUA 10
1.3.3 SISTEMAS MULTIMEDIA DISTRIBUIDOS 12
1.3.4 COMPUTACIÓN DISTRIBUIDA COMO UTILIDAD 13
1.4 CENTRARSE EN COMPARTIR RECURSOS 16
1.5 DESAFÍOS 18
1.5.1 HETEROGENEIDAD 19
1.5.2 FRANQUEZA 21
1.5.3 SEGURIDAD 22
1.5.4 ESCALABILIDAD 24
1.5.5 MANEJO DE FALLAS 26
1.5.6 CONCURRENCIA 29
1.5.7 TRANSPARENCIA 30
1.5.8 CALIDAD DE SERVICIO 34
1.6 ESTUDIO DE CASO: THE WORLD WIDE WEB 35
2
1.1 INTRODUCCIÓN
Las redes están en todas partes y son la base de muchos servicios cotidianos que ahora
damos por sentado: Internet y la World Wide Web asociada, búsqueda web, juegos en línea,
correo electrónico, redes sociales, comercio electrónico, etc., comparten las características
esenciales que las convierten en temas relevantes de estudio bajo el título de sistemas
distribuidos.
En este libro pretendemos explicar las características de las computadoras en red que
impactan a los diseñadores e implementadores de sistemas y presentar los principales
conceptos y técnicas que se han desarrollado para ayudar en las tareas de diseño e
implementación de sistemas que se basan en ellas.
Esta simple definición cubre toda la gama de sistemas en los que se pueden implementar de
manera útil computadoras en red.
3
Las computadoras que están conectadas por una red pueden estar separadas espacialmente
por cualquier distancia. Pueden estar en continentes separados, en el mismo edificio o en la
misma habitación.
Características:
En la concurrencia, los procesos en ejecución no tienen por qué estar relacionados, es decir,
cualquiera puede iniciar y terminar en el momento que sea, y el resultado de uno no afecta al
otro. La concurrencia ayuda a procesar varias tareas al mismo tiempo.
Carencia de reloj global. - Cuando los programas necesitan cooperar, coordinan sus
acciones intercambiando mensajes. Las coordinaciones para la transferencia de mensajes
entre los diferentes componentes para la realización de una tarea, no tienen una
temporización general para la ejecución de los procesos entre los diferentes componentes.
Fallos independientes de los componentes.-. Cada componente del sistema puede fallar
independientemente, con lo cual los demás pueden continuar ejecutando sus acciones. Esto
4
permite el logro de las tareas con mayor efectividad, pues el sistema en su conjunto continúa
trabajando.
Los sistemas distribuidos abarcan muchos de los desarrollos tecnológicos más importantes
de los últimos años y, por lo tanto, la comprensión de la tecnología subyacente es
absolutamente fundamental para el conocimiento de la informática moderna.
La figura también proporciona una visión inicial de la amplia gama de aplicaciones que se
utilizan en la actualidad:
Sistemas a escala global que involucran millones de nodos, desde servicios centrados
en datos hasta tareas intensivas en procesadores.
5
Sistemas construidos a partir de sensores muy pequeños y relativamente primitivos
hasta aquellos que incorporan elementos computacionales potentes.
La tarea de un motor de búsqueda web es indexar todo el contenido de la World Wide Web,
que abarca una amplia gama de estilos de información, incluidas páginas web, fuentes
multimedia y libros (escaneados). Las estimaciones actuales son:
6
1.2.2 JUEGOS EN LINEA MULTIJUGADOR MASIVO
Quizás sorprendentemente, el juego en línea más grande, EVE Online, utiliza una
arquitectura cliente-servidor donde se mantiene una única copia del estado del mundo
en un servidor centralizado y al que acceden los programas cliente que se ejecutan
en las consolas de los jugadores u otros dispositivos.
Adoptan arquitecturas más distribuidas en las que el universo está dividido en una
cantidad (potencialmente muy grande) de servidores que también pueden estar
distribuidos geográficamente.
7
Ilustración 6 El jugador es capaz de pilotar diferentes naves espaciales
recorriendo una parte de una galaxia a través de más de 7.000 sistemas
estelares.
Ilustración 7Ilustra un sistema de comercio financiero típico. Esto muestra una serie de feeds de eventos que ingresan a una
institución financiera determinada.
8
1.3 TENDENCIAS EN SISTEMAS DISTRIBUIDOS
Wi-Fi es un sistema de conectividad sin hilos entre dispositivos electrónicos a corta distancia,
mientras que el WiMAX lo es para largas distancias.
Internet también es un sistema distribuido muy grande. Permite a los usuarios, estén donde
estén, utilizar servicios como la World Wide Web, el correo electrónico y la transferencia de
archivos.
9
Figura N° 1.3 Porción atípica del internet
Ilustración 9Ilustra una parte típica de Internet. Los programas que se ejecutan en las computadoras conectadas a él interactúan
pasando mensajes, empleando un medio de comunicación común.
10
Figura N° 1.4 Dispositivos portátiles y de mano en un sistema distribuido
Ilustración 11Muestra un usuario que visita una organización anfitriona. La figura muestra la intranet de inicio del usuario y la intranet de
host en el sitio que está visitando el usuario. Ambas intranets están conectadas al resto de Internet.
De manera similar, la computación móvil tiene ventajas incluso si solo involucra computadoras
y dispositivos convencionales y discretos, como computadoras portátiles e impresoras.
11
1.3.3 SISTEMAS MULTIMEDIA DISTRIBUIDOS
La característica crucial de los tipos de medios continuos es que incluyen una dimensión
temporal y, de hecho, la integridad del tipo de medio depende fundamentalmente de la
preservación de las relaciones en tiempo real entre elementos de un tipo de medios. Por
ejemplo, en una presentación de video es necesario preservar un rendimiento dado en
términos de cuadros por segundo y, para transmisiones en tiempo real, un retardo o latencia
máximo dado para la entrega de cuadros.
Los beneficios de la informática multimedia distribuida son considerables en el sentido de que
se puede proporcionar una amplia gama de nuevos servicios y aplicaciones (multimedia) en
el escritorio, incluido el acceso a transmisiones de televisión en vivo o pregrabadas, el acceso
a bibliotecas de películas que ofrecen servicios de video a pedido. El acceso a bibliotecas
12
de música, la provisión de instalaciones para conferencias de audio y video y funciones de
telefonía integradas, incluida la telefonía IP o tecnologías relacionadas como Skype, una
alternativa de igual a igual a la telefonía IP (la infraestructura del sistema distribuido que
sustenta Skype). Tenga en cuenta que esta tecnología es revolucionaria para desafiar a los
fabricantes a repensar muchos dispositivos de consumo. Por ejemplo, ¿cuál es el dispositivo
principal de entretenimiento en el hogar del futuro: la computadora, ¿la televisión o la consola
de juegos?
Webcasting es una aplicación de tecnología multimedia distribuida. Webcasting es la
capacidad de transmitir medios continuos, generalmente audio o video, a través de Internet.
Ahora es común que los principales eventos deportivos o musicales se transmitan de esta
manera.
Las aplicaciones multimedia distribuidas, como la difusión por Internet, plantean exigencias
considerables a la infraestructura distribuida subyacente en términos de:
13
Los recursos físicos, como el almacenamiento y el procesamiento, pueden estar
disponibles para computadoras en red, eliminando la necesidad de poseer dichos
recursos por su cuenta. A un extremo del espectro, un usuario puede optar por una
instalación de almacenamiento remoto para archivos requisitos de almacenamiento
(por ejemplo, para datos multimedia como fotografías, música o video) y / o para
copias de seguridad. De manera similar, este enfoque permitiría al usuario alquilar
uno o más nodos computacionales, ya sea para reparar su computación básica
necesita o, de hecho, realizar cálculos distribuidos. En el otro extremo del espectro,
los usuarios pueden acceder a centros de datos sofisticados (instalaciones en red.
Ofrecer acceso a repositorios de grandes volúmenes de datos a los usuarios u
organizaciones) o de hecho infraestructura computacional que utiliza el tipo de
servicios ahora proporcionado por empresas como Amazon y Google. Sistema
operativo. La virtualización es una tecnología habilitadora clave para este enfoque, lo
que implica que los usuarios en realidad, los servicios pueden ser proporcionados por
un nodo virtual en lugar de físico. Esto ofrece una mayor flexibilidad al proveedor de
servicios en términos de recursos.
Los servicios de software también pueden estar disponibles en Internet global
utilizando este enfoque. De hecho, muchas empresas ofrecen ahora una gama
14
El término computación en la nube se utiliza para capturar esta visión de la computación
como una utilidad. A La nube se define como un conjunto de aplicaciones, almacenamiento
y servicios informáticos basados en Internet. Suficiente para satisfacer las necesidades de la
mayoría de los usuarios, lo que les permite dispensar en gran medida o totalmente con
almacenamiento de datos local y software de aplicación. El término también promueve una
visión de todo como un servicio, desde la infraestructura física o virtual hasta el software, que
a menudo se paga por uso en lugar de adquirirse. Tenga en cuenta que La computación en
la nube reduce los requisitos en los dispositivos de los usuarios, lo que permite un escritorio
muy simple. O dispositivos portátiles para acceder a una gama potencialmente amplia de
recursos y servicios.
15
1.4 CENTRARSE EN COMPARTIR RECURSOS
Los usuarios están acostumbrados a los beneficios de compartir recursos que casualmente
Pasamos por alto su importancia. Compartimos recursos de hardware como impresoras,
recursos como archivos y recursos con funciones más específicas como la búsqueda
motores, Visto desde el punto de vista de la provisión de hardware, compartimos equipos
como impresoras y discos para reducir costos. Pero de mucha mayor importancia para los
usuarios es compartir de los recursos de alto nivel que juegan un papel en sus aplicaciones
y en sus trabajos y actividades sociales. Por ejemplo, a los usuarios les preocupa compartir
datos en la forma de una base de datos compartida o un conjunto de páginas web, no los
discos y procesadores en los que están implementados. Del mismo modo, los usuarios
piensan en términos de recursos compartidos, como motor de búsqueda o conversor de
divisas, sin tener en cuenta el servidor o servidores que proporcione estos.
En la práctica, los patrones de intercambio de recursos varían ampliamente en su alcance y
en cómo los usuarios trabajan en estrecha colaboración.
En un extremo, un motor de búsqueda en la Web proporciona una facilidad para los usuarios
de todo el mundo, usuarios que nunca necesitan entrar en contacto con uno u otro
directamente. En el otro extremo, en el trabajo cooperativo asistido por computadora (CSCW),
un grupo de usuarios que cooperan directamente comparten recursos como documentos en
un grupo pequeño y cerrado. El patrón de compartir y la distribución geográfica de usuarios
particulares determinan, qué mecanismos debe suministrar el sistema para coordinar
acciones de los usuarios.
16
Utilizamos el término servicio para una parte distinta de un sistema informático que gestiona
una recopilación de recursos relacionados y presenta su funcionalidad a usuarios y
aplicaciones.
Por ejemplo, accedemos a archivos compartidos a través de un servicio de archivos;
enviamos documentos a printcrs a través de un servicio de impresión; compramos bienes a
través de un servicio de pago electrónico.
El único acceso que tenemos al servicio es a través del conjunto de operaciones que exporta.
Por ejemplo, un servicio de archivos proporciona operaciones de lectura, escritura y
eliminación en archivos.
El hecho de que los servicios restrinjan el acceso a los recursos a un conjunto bien definido
de operaciones es en parte, la práctica estándar de ingeniería de software. Pero también
refleja lo físico organización de sistemas distribuidos. Los recursos en un sistema distribuido
son físicamente encapsulados dentro de las computadoras y solo se puede acceder desde
otras computadoras y medios de comunicación.
Para compartir de forma eficaz, cada recurso debe ser gestionado por un programa que
ofrece una interfaz de comunicación que permite acceder al recurso y actualizado de forma
fiable y coherente, El servidor term probablemente sea familiar para la mayoría de los
lectores. It refers a un programa en ejecución (un proceso) en una computadora en red que
acepta solicitudes de programas que se ejecutan en otras computadoras para realizar un
servicio y responda adecuadamente. El solicitante Los procesos se conocen como clientes, y
el enfoque general se conoce como cliente-servidor.
Informática. En este enfoque, las solicitudes se envían en mensajes de los clientes a un
servidor y las respuestas se envían en mensajes desde el servidor a los clientes. Cuando el
cliente envía una solicitud para que se realice una operación, decimos que el cliente invoca
una operación en el servidor, una interacción completa entre un cliente y un servidor, desde
el punto cuando el cliente envía su solicitud a cuando recibe la respuesta del servidor, se
llama invocación remota. El mismo proceso puede ser tanto un cliente como un servidor, ya
que los servidores a veces invocar operaciones en otros servidores. Los términos "cliente" y
"servidor" se aplican solo a los roles jugado en una sola solicitud. Los clientes están activos
(realizando solicitudes) y los servidores son pasivos (solo se despierta cuando reciben
solicitudes); los servidores funcionan continuamente, mientras que los clientes duran sólo
mientras las aplicaciones de las que forman parte. Tenga en cuenta que, aunque los términos
"cliente" y "servidor" se refieren a procesos en lugar de que las computadoras en las que
ejecutan, en el lenguaje cotidiano esos términos también se refieren a las propias
computadoras. Otra distinción, que discutiremos en el Capítulo 5, es que en un sistema
distribuido escrito en un lenguaje orientado a objetos, los recursos pueden ser
17
encapsulados como objetos y a los que acceden los objetos cliente, en cuyo caso
hablamos de un cliente objeto que invoca un método sobre un objeto de servidor.
Muchos, pero ciertamente no todos, los sistemas distribuidos se pueden construir
completamente en la forma de interactuar con clientes y servidores. La World Wide Web,
correo electrónico y en red todas las impresoras se ajustan a este modelo Una ejecución del
navegador web es un ejemplo de un cliente. El navegador web se comunica con un servidor
web, para solicitarle páginas web. Consideramos la Web y su arquitectura cliente-servidor
asociada.
1.5 DESAFÍOS
Los ejemplos de la Sección 1.2 están destinados a ilustrar el alcance de los sistemas
distribuidos y sugerir los problemas que surgen en su diseño. En muchos de ellos, se
encontraron y superaron desafíos importantes. A medida que se amplía el alcance y la escala
de los sistemas y aplicaciones distribuidos, es probable que se encuentren los mismos y otros
desafíos. En esta sección describimos los principales desafíos.
Ilustración 15 Desafíos
18
1.5.1 HETEROGENEIDAD
Internet permite a los usuarios acceder a servicios y ejecutar aplicaciones a través de una
colección heterogénea de computadoras y redes. La heterogeneidad (es decir, variedad y
diferencia) se aplica a todos los siguientes:
• redes;
• hardware de la computadora;
• sistemas operativos;
• lenguajes de programación;
Aunque Internet consta de muchos tipos diferentes de redes, sus diferencias están
enmascaradas por el hecho de que todas las computadoras conectadas a ellas utilizan los
protocolos de Internet para comunicarse entre sí. Por ejemplo, una computadora conectada
a una Ethernet tiene una implementación de los protocolos de Internet a través de Ethernet,
mientras que una computadora en un tipo diferente de red necesitará una implementación de
los protocolos de Internet para esa red.
Los tipos de datos, como los números enteros, pueden representarse de diferentes formas
en diferentes tipos de hardware; por ejemplo, existen dos alternativas para el orden de bytes
de los números enteros. Estas diferencias de representación deben tratarse si se van a
intercambiar mensajes entre programas que se ejecutan en hardware diferente.
Aunque los sistemas operativos de todas las computadoras en Internet deben incluir una
implementación de los protocolos de Internet, no todos proporcionan necesariamente la
misma interfaz de programación de aplicaciones para estos protocolos. Por ejemplo, las
llamadas para intercambiar mensajes en UNIX son diferentes de las llamadas en Windows.
Los diferentes lenguajes de programación usan diferentes representaciones para caracteres
y estructuras de datos como matrices y registros. Estas diferencias deben abordarse para
que los programas escritos en diferentes idiomas puedan comunicarse entre sí. Los
programas escritos por diferentes desarrolladores no pueden comunicarse entre sí a menos
que utilicen estándares comunes, por ejemplo, para la comunicación en red y la
representación de elementos de datos primitivos y estructuras de datos en mensajes. Para
que esto suceda, es necesario acordar y adoptar estándares, al igual que los protocolos de
Internet.
19
Middleware El término middleware se aplica a una capa de software que proporciona una
abstracción de programación además de enmascarar la heterogeneidad de las redes
subyacentes, hardware, sistemas operativos y lenguajes de programación. El agente de
solicitud de objeto común (CORBA), es un ejemplo. Algunos middlewares, como Java Remote
Method Invocation (RMI), solo admiten un único lenguaje de programación. La mayor parte
del middleware se implementa a través de los protocolos de Internet, que enmascaran las
diferencias de las redes subyacentes, pero todo el middleware se ocupa de las diferencias en
los sistemas operativos y el hardware. Además de resolver los problemas de heterogeneidad,
el middleware proporciona un modelo computacional uniforme para que lo utilicen los
programadores de servidores y aplicaciones distribuidas. Los posibles modelos incluyen la
invocación remota de objetos, la notificación remota de eventos, el acceso SQL remoto y el
procesamiento de transacciones distribuidas. Por ejemplo, CORBA proporciona
la invocación remota de objetos, lo que permite que un objeto de un programa que se ejecuta
en una computadora invoque un método de un objeto en un programa que se ejecuta en otra
computadora. Su implementación oculta el hecho de que los mensajes se pasan a través de
una red para enviar la solicitud de invocación y su respuesta.
Ilustración 16 Middleware
Heterogeneidad y código móvil El término código móvil se utiliza para referirse al código de
programa que se puede transferir de una computadora a otra y ejecutarse en el destino; los
applets de Java son un ejemplo. El código adecuado para ejecutarse en una computadora no
es necesariamente adecuado para ejecutarse en otra porque los programas ejecutables
normalmente son específicos tanto del conjunto de instrucciones como del sistema operativo
host.
20
El enfoque de la máquina virtual proporciona una forma de hacer que el código sea ejecutable
en una variedad de computadoras host: el compilador de un lenguaje en particular genera
código para una máquina virtual en lugar de un código de orden de hardware en particular.
Por ejemplo, el compilador de Java produce código para una máquina virtual Java, que lo
ejecuta por interpretación. La máquina virtual Java debe implementarse una vez para cada
tipo de computadora para permitir la ejecución de los programas [Link] en día, la forma
de código móvil más utilizada es la inclusión de programas Javascript en algunas páginas
web cargadas en los navegadores de los clientes.
1.5.2 FRANQUEZA
21
Por ejemplo, el Consorcio World Wide Web (W3C) desarrolla y publica estándares
relacionados con el funcionamiento de la Web [[Link]].
Los sistemas que están diseñados para apoyar el intercambio de recursos de esta manera
se denominan abiertos sistemas distribuidos para enfatizar el hecho de que son extensibles.
Pueden extenderse a nivel de hardware mediante la adición de computadoras a la red y en
el software nivel mediante la introducción de nuevos servicios y la reimplementación de los
antiguos, permitiendo programas de aplicación para compartir recursos. Un beneficio
adicional que a menudo se cita para sistemas es su independencia de los proveedores
individuales.
Para resumir:
Los sistemas abiertos se caracterizan por el hecho de que sus interfaces clave están
publicadas. Los sistemas distribuidos abiertos se basan en la provisión de una
comunicación uniforme mecanismo e interfaces publicadas para acceder a recursos
compartidos.
Los sistemas distribuidos abiertos se pueden construir a partir de hardware
heterogéneo y software, posiblemente de diferentes proveedores. Pero la conformidad
de cada uno componente a la norma publicada debe ser cuidadosamente probado y
verificado si el Sistema debe funcionar correctamente.
1.5.3 SEGURIDAD
Ilustración 17 Seguridad
22
integridad (protección contra alteración o corrupción). y disponibilidad (protección contra
interferencia con los medios para acceder a los recursos).
La sección 1.1 señaló que, aunque Internet permite un programa en una computadora para
comunicarse con un programa en otra computadora independientemente de su E NR
ubicación. Los riesgos de seguridad están asociados con permitir el libre acceso a todos los
recursos en una intranet. Aunque se puede usar un firewall para formar una barrera alrededor
de una intranet, restringir el tráfico que puede entrar y salir, esto no se trata de asegurar el
uso apropiado de los recursos por parte de los usuarios dentro de una intranet, o con el uso
apropiado de recursos en Internet, que no están protegidos por firewalls.
En un sistema distribuido, los clientes envían solicitudes para acceder a datos administrados
por servidores, que implica enviar información en mensajes a través de una red. Por ejemplo:
1. Un médico puede solicitar acceso a los datos del paciente del hospital o enviar
adiciones a esos datos.
2, en el comercio electrónico y la banca, los usuarios envían sus números de tarjetas de
crédito a La Internet.
23
Seguridad del código móvil: el código móvil debe manejarse con cuidado. Considerar
alguien que recibe un programa ejecutable como adjunto de correo electrónico: en los
posibles efectos de ejecutar el programa son impredecibles, por ejemplo, puede parecer para
mostrar una imagen interesante, pero en realidad puede acceder a recursos locales, o tal vez
ser parte de un ataque de denegación de servicio.
1.5.4 ESCALABILIDAD
Ilustración 18 Escalabilidad
24
evitar el cuello de botella de rendimiento que se produciría si un único servidor de archivos
tuviera que manejar todas las solicitudes de acceso a archivos. En general, para que un
sistema con 1 usuarios sea escalable, La cantidad de recursos físicos necesarios para
mantenerlos debe ser como máximo O (1) – que es proporcional. Por ejemplo, si un solo
servidor puede admitir 20 usuarios, entonces dos de estos servidores deberían poder soportar
40 usuarios. Aunque eso suena obvio objetivo, no es necesariamente fácil de lograr en la
práctica.
Control de la pérdida de rendimiento: considere la gestión de un conjunto de datos cuyo el
tamaño es proporcional a la cantidad de usuarios o recursos en el sistema, por ejemplo, la
tabla con la correspondencia entre los nombres de dominio de las computadoras y sus
Direcciones de Internet en poder del sistema de nombres de dominio, que se utiliza
principalmente para buscar hasta nombres DNS como [Link]. Algoritmos que
utilizan estructuras jerárquicas. Escalar mejor que los que utilizan estructuras lineales. Pero
incluso con estructuras jerárquicas un aumento de tamaño resultará en una pérdida de
rendimiento: el tiempo necesario para acceder
Los datos estructurados jerárquicamente son O (/og n), donde n es el tamaño del conjunto de
datos. Para para que el sistema sea escalable, la pérdida máxima de rendimiento no debería
ser peor que esto. Evitar que los recursos de software se agoten: un ejemplo de falta de
escalabilidad es mostrados por los números utilizados como direcciones de Internet (IP)
(direcciones de computadora en el Internet). A finales de la década de 1970, se decidió utilizar
32 bits para este propósito, pero como se explica en el Capítulo 3, el suministro de direcciones
de Internet disponibles se está agotando. Por este motivo, se está desarrollando una nueva
versión del protocolo con direcciones de Internet de 128 bits. Adoptado, y esto requerirá
modificaciones en muchos componentes de software.
25
Para los primeros diseñadores de Internet, no existe una solución correcta para este
problema. Es Difícil predecir la demanda que se pondrá en un sistema años antes. Es más,
compensar en exceso el crecimiento futuro puede ser peor que adaptarse a un cambio
cuando nos vemos obligados a hacerlo: las direcciones de Internet más grandes ocuparán
espacio adicional en los mensajes y en el almacenamiento de la computadora. Evitar cuellos
de botella en el rendimiento: en general, los algoritmos deben estar descentralizados para
evitar cuellos de botella en el rendimiento. Ilustramos este punto con referencia al predecesor
del sistema de nombres de dominio, en el que la tabla de nombres se mantuvo en un archivo
maestro único que se puede descargar a cualquier computadora que lo necesite. Eso fue bien
cuando solo había unos pocos cientos de computadoras en Internet, pero pronto se convirtió
en un grave cuello de botella administrativo y de rendimiento. El nombre de dominio El sistema
eliminó este cuello de botella dividiendo la tabla de nombres entre servidores ubicados en
Internet y administrados localmente. Se accede a algunos recursos compartidos con mucha
frecuencia; por ejemplo, muchos usuarios pueden acceder a la misma página web,
provocando una disminución en el rendimiento. El sistema y el software de la aplicación no
deberían necesitar cambiar cuando la báscula del sistema aumenta, pero esto es difícil de
lograr. El tema de la escala es un tema en el desarrollo de sistemas distribuidos
26
antes de que hayan completado el cálculo, discutiremos y clasificaremos un rango de
posibles tipos de fallas que pueden ocurren en los procesos y redes que componen
un sistema distribuido.
Dejar caer un mensaje que está dañado es un ejemplo de cómo hacer que una falla
sea menos grave podría retransmitirse. El lector probablemente se dará cuenta de
que las técnicas descritas para ocultar fallas no se garantizan que funcione en el peor
de los casos; Por ejemplo, los datos del segundo disco también pueden estar dañados
o el mensaje puede no pasar en un tiempo razonable, aunque a menudo se
retransmita.
Tolerar fallas: la mayoría de los servicios en Internet exhiben fallas - No sea práctico
para ellos intentar detectar y ocultar todas las fallas que podrían ocurren en una red
tan grande con tantos componentes. Sus clientes pueden ser diseñados para tolerar
fallas, lo que generalmente implica que los usuarios las toleren como bien. Por
ejemplo, cuando un navegador web no puede contactar con un servidor web, no hace
27
El usuario llora por vísperas mientras sigue intentándolo: informa al usuario sobre el
problema, dejándolos libres para volver a intentarlo más tarde. Los servicios que
toleran fallas se tratan en el párrafo sobre redundancia a continuación.
Recuperación de fallas: La recuperación implica el diseño de software para que los
estados de los datos permanentes se pueden recuperar o "revertir" después de que
un servidor se ha bloqueado. General. Los cálculos realizados por algunos programas
estarán incompletos cuando un ocurre una falla, y los datos permanentes que
actualizan (archivos y otro material almacenado en almacenamiento permanente)
puede no estar en un estado consistente
Redundancia: los servicios se pueden hacer para tolerar fallas mediante el uso de
redundancia. Componentes. Considere los siguientes ejemplos:
1. Siempre debe haber al menos dos rutas diferentes entre dos enrutadores en la
Internet.
2. En el Sistema de nombres de dominio, cada tabla de nombres se replica en al
menos dos diferentes servidores.
3. Una base de datos se puede replicar en varios servidores para garantizar que
los datos permanezcan accesibles después de la falla de cualquier servidor:
Los servidores pueden diseñarse para detectar fallas en sus peers; cuando se
detecta una falla en un servicio, los clientes son redirigido a los servidores
restantes.
28
1.5.6 CONCURRENCIA
Tanto los servicios como las aplicaciones proporcionan recursos que los clientes pueden
compartir en un sistema distribuido. Por tanto, existe la posibilidad de que varios clientes
intenten acceder a un recurso compartido al mismo tiempo. Por ejemplo, se puede acceder
con mucha frecuencia a una estructura de datos que registra las ofertas para una subasta
cuando se acerca la fecha límite.
El proceso que administra un recurso compartido podría aceptar una solicitud de cliente a la
vez. Pero ese enfoque limita el rendimiento. Por lo tanto, los servicios y las aplicaciones
generalmente permiten procesar simultáneamente varias solicitudes de clientes. Para hacerlo
más concreto, suponga que cada recurso está encapsulado como un objeto y que las
invocaciones se ejecutan en subprocesos concurrentes. En este caso, es posible que varios
subprocesos se estén ejecutando simultáneamente dentro de un objeto, en cuyo caso sus
operaciones en el objeto pueden entrar en conflicto entre sí y producir resultados
inconsistentes. Por ejemplo, si dos ofertas simultáneas en una subasta son 'Smith: $ 122' y
'Jones: $ 111', y las operaciones correspondientes se intercalan sin ningún control, es posible
que se almacenen como 'Smith: $ 111' y 'Jones: $ 122’.
Ilustración 21 Concurrencias
29
La moraleja de esta historia es que cualquier objeto que represente un recurso compartido en
un sistema distribuido debe ser responsable de garantizar que funcione correctamente en un
entorno concurrente. Esto se aplica no solo a los servidores, sino también a los objetos de las
aplicaciones. Por lo tanto, cualquier programador que realice una implementación de un
objeto que no fue diseñado para su uso en un sistema distribuido debe hacer todo lo necesario
para que sea seguro en un entorno concurrente.
Para que un objeto esté seguro en un entorno concurrente, sus operaciones deben estar
sincronizadas de tal manera que sus datos permanezcan consistentes. Esto se puede lograr
mediante técnicas estándar como los semáforos, que se utilizan en la mayoría de los sistemas
operativos.
1.5.7 TRANSPARENCIA
Ilustración 22 Transparencia
30
Ilustración 23 En entornos de arquitectura Web encontramos algunos
ejemplos de cómo funciona
31
es la misma si los archivos dentro de la carpeta son locales o remotos. Otro ejemplo
es una API para archivos que usa las mismas operaciones para acceder a archivos
locales y remotos.
32
del correo electrónico, que finalmente se entrega, incluso cuando fallan los servidores o los
enlaces de comunicación. Las fallas se enmascaran al intentar retransmitir mensajes hasta
que se entregan correctamente, incluso si lleva varios días. El middleware generalmente
convierte las fallas de redes y procesos en excepciones a nivel de programación.
Para ilustrar la transparencia de la movilidad, considere el caso de los teléfonos móviles.
Suponga que tanto la persona que llama como la persona que llama viajan en tren en
diferentes partes de un país, de un entorno (celda) a otro. Consideramos el teléfono de la
persona que llama como el cliente y el teléfono de la persona que llama como un recurso.
Los dos usuarios de teléfonos que realizan la llamada desconocen la movilidad de los
teléfonos (el cliente y el recurso) entre celdas.
La transparencia oculta y convierte en anónimos los recursos que no son de relevancia directa
para la tarea en cuestión para los usuarios y programadores de aplicaciones. Por ejemplo,
generalmente es deseable que recursos de hardware similares se asignen de manera
intercambiable para realizar una tarea; la identidad de un procesador utilizado para ejecutar
un proceso generalmente se oculta al usuario y permanece anónima.: por ejemplo, un viajero
que conecta una computadora portátil a la red local en cada oficina visitada debe hacer uso
de servicios locales como el servicio de envío de correo, utilizando diferentes servidores en
cada ubicación. Incluso dentro de un edificio, es normal disponer que un documento se
imprima en una impresora con nombre particular: generalmente una que está cerca del
usuario.
33
1.5.8 CALIDAD DE SERVICIO
Una vez que los usuarios cuentan con la funcionalidad que requieren de un servicio, como el
servicio de archivos en un sistema distribuido, podemos pasar a preguntar sobre la calidad
del servicio prestado. Las principales propiedades no funcionales de los sistemas que afectan
la calidad del servicio experimentado por clientes y usuarios son la confiabilidad, la seguridad
y el rendimiento. La adaptabilidad para cumplir con las configuraciones cambiantes del
sistema y la disponibilidad de recursos se ha reconocido como otro aspecto importante de la
calidad del servicio.
34
De hecho, la abreviatura QoS se ha apoderado efectivamente para referirse a la capacidad
de los sistemas para cumplir con dichos plazos. Su logro depende de la disponibilidad de los
recursos informáticos y de red necesarios en los momentos adecuados. Esto implica un
requisito para que el sistema proporcione recursos informáticos y de comunicación
garantizados que sean suficientes para permitir que las aplicaciones completen cada tarea a
tiempo (por ejemplo, la tarea de mostrar un cuadro de video).
The World Wide Web [[Link] I, Berners-Lee 1991] es un sistema en evolución para
publicar y acceder a recursos y servicios a través de Internet. A través de los navegadores
web comúnmente disponibles, los usuarios recuperan y ven documentos de muchos tipos,
escuchan transmisiones de audio y visualizan transmisiones de video e interactúan con un
conjunto ilimitado de servicios.
35
La Web nació en el Centro Europeo de Investigación Nuclear (CERN), Suiza, en 1989 como
un vehículo para el intercambio de documentos entre una comunidad de físicos conectados
por Internet [Berners-Lee 1999]. Una característica clave de la Web es que proporciona una
estructura de hipertexto entre los documentos que almacena, lo que refleja la necesidad de
los usuarios de organizar su conocimiento. Esto significa que los documentos contienen
enlaces (o hipervínculos): referencias a otros documentos y recursos que también se
almacenan en la Web.
La Web es un sistema abierto: puede ampliarse e implementarse de nuevas formas sin alterar
su funcionalidad existente (consulte la Sección 1.5.2). En primer lugar, su funcionamiento se
basa en estándares de comunicación y estándares de documentos o contenidos que se
publican libremente y se implementan ampliamente. Por ejemplo, existen muchos tipos de
navegadores, cada uno en muchos casos implementado en varias plataformas; y hay muchas
implementaciones de servidores web. Cualquier navegador compatible puede recuperar
recursos de cualquier servidor compatible. Por lo tanto, los usuarios tienen acceso a los
navegadores en la mayoría de los dispositivos que utilizan, desde teléfonos móviles hasta
computadoras de escritorio.
En segundo lugar, la Web está abierta con respecto a los tipos de recursos que se pueden
publicar y compartir en ella. En su forma más simple, un recurso en la Web es una página
web o algún otro tipo de contenido que se puede presentar al usuario, como archivos
multimedia y documentos en formato de documento portátil. Si alguien inventa, digamos, un
nuevo formato de almacenamiento de imágenes, las imágenes en este formato se pueden
publicar inmediatamente en la Web. Los usuarios necesitan un medio para ver imágenes en
este nuevo formato, pero los navegadores están diseñados para adaptarse a la nueva
funcionalidad de presentación de contenido en forma de aplicaciones 'auxiliares' y
'complementos'.
La Web ha ido más allá de estos simples recursos de datos para abarcar servicios, como la
compra electrónica de bienes. Ha evolucionado sin cambiar su arquitectura básica. La Web
se basa en tres componentes tecnológicos estándares principales:
• el lenguaje de marcado de hipertexto (HTML), un lenguaje para especificar el contenido y el
diseño de las páginas tal como se muestran en los navegadores web;
• Localizadores Uniformes de Recursos (URLS), también conocidos como Identificadores
Uniformes de Recursos (URIS), que identifican documentos y otros recursos almacenados
como parte de la Web;
• una arquitectura de sistema cliente-servidor, con reglas estándar de interacción (el Protocolo
de transferencia de hipertexto - HTTP) mediante el cual los navegadores y otros clientes
obtienen documentos y otros recursos de los servidores web. La figura 1.7 muestra algunos
36
servidores web y los navegadores que les solicitan. Es una característica importante que los
usuarios pueden ubicar y administrar sus propios servidores web en cualquier lugar de
Internet.
37
Ilustración 30 Estructura de una URL
Las URL HTTP son las más utilizadas para acceder a recursos mediante el protocolo HTTP
estándar. Una URL HTTP tiene dos funciones principales: identificar qué servidor web
mantiene el recurso e identificar cuál de los recursos de ese servidor es necesario. La Figura
1.7 muestra tres navegadores que emiten solicitudes de recursos administrados por tres
servidores web. El navegador más alto envía una consulta a un motor de búsqueda. El
navegador del medio requiere la página predeterminada de otro sitio web. El navegador de
la parte inferior requiere una página web que se especifique en su totalidad, incluido un
nombre de ruta relativo al servidor. Los archivos de un servidor web determinado se
mantienen en uno o más subárboles (directorios) del sistema de archivos del servidor, y cada
recurso se identifica mediante un nombre de ruta relativo al servidor.
su publicación en páginas web.
HTTP • El Protocolo de transferencia de hipertexto [[Link] IV] define las formas en que
los navegadores y otros tipos de clientes interactúan con los servidores web. El Capítulo 5
considerará HTTP con más detalle, pero aquí describimos sus características principales
(restringiendo nuestra discusión a la recuperación de recursos en archivos):
38
Tipos de contenido: los navegadores no son necesariamente capaces de manejar todo tipo
de contenido. Cuando un navegador realiza una solicitud, incluye una lista de los tipos de
contenido que prefiere; por ejemplo, en principio, puede mostrar imágenes en formato 'GIF'
pero no en formato 'JPEG'.
Un recurso por solicitud: los clientes especifican un recurso por solicitud HTTP. Si una página
web contiene nueve imágenes, digamos, entonces el navegador emitirá un total de diez
solicitudes separadas para obtener todo el contenido de la página.
Páginas dinámicas • Hasta ahora hemos descrito cómo los usuarios pueden publicar
páginas web y otro contenido almacenado en archivos en la web. Sin embargo, gran parte
de la experiencia de los usuarios de la Web consiste en interactuar con los servicios en lugar
de recuperar datos. Por ejemplo, cuando compra un artículo en una tienda en línea, el usuario
a menudo completa un formulario web para proporcionar datos personales o especificar
exactamente lo que desea comprar. Un formulario web es una web página que contiene
instrucciones para el usuario y widgets de entrada, como campos de texto y casillas de
verificación. Cuando el usuario envía el formulario (generalmente presionando un botón o la
tecla 'retorno'), el navegador envía una solicitud HTTP a un servidor web, que contiene los
valores que el usuario ha ingresado.
39
Dado que el resultado de la solicitud depende de la entrada del usuario, el servidor tiene que
procesar la entrada del usuario. Por lo tanto, la URL o su componente inicial designa un
programa en el servidor, no un archivo. Por ejemplo, una solicitud que contiene la siguiente
URL invoca un programa llamado 'búsqueda' en [Link] y especifica una cadena
de consulta de 'obama': [Link]
Servicios web • Hasta ahora hemos analizado la web en gran medida desde el punto de vista
de un usuario que utiliza un navegador. Pero los programas distintos de los navegadores
también pueden ser clientes de la Web; de hecho, el acceso programático a los recursos web
es un lugar común.
Sin embargo, HTML es inadecuado para la interoperación programática. Existe una
necesidad cada vez mayor de intercambiar muchos tipos de datos estructurados en la Web,
pero HTML está limitado porque no es extensible a aplicaciones más allá de la exploración
de información. HTML tiene un conjunto estático de estructuras, como párrafos, y están
vinculadas a la forma en que se presentarán los datos a los usuarios. El Lenguaje de marcado
extensible (XML).
su arquitectura de sistema. Los estándares en los que se basa su arquitectura son simples y
se publicaron ampliamente en una etapa temprana. Han permitido integrar muchos tipos
nuevos de recursos y servicios.
El éxito de la Web oculta algunos problemas de diseño. Primero, su modelo de hipertexto
carece en algunos aspectos. Si un recurso es eliminado o movido, los llamados enlaces
40
'colgantes' a ese recurso pueden permanecer, causando frustración a los usuarios. Y existe
el conocido problema de que los usuarios se "pierden en el hiperespacio". Los usuarios a
menudo se encuentran confundidos, siguiendo muchos enlaces dispares, haciendo referencia
a páginas de una colección dispar de fuentes y de dudosa confiabilidad en algunos casos.
Los motores de búsqueda son una alternativa muy popular a los enlaces siguientes como
medio para encontrar información en la Web, pero no son perfectos para producir lo que el
usuario pretende específicamente. Un enfoque a este problema, ejemplificado en el Recurso
41