0% encontró este documento útil (0 votos)
121 vistas41 páginas

Informe Grupal Sistemas Distribuidos

Este documento presenta una introducción a los sistemas distribuidos. Explica las características clave de los sistemas distribuidos como la concurrencia, la falta de un reloj global y los fallos independientes de los componentes. Luego describe ejemplos como la búsqueda web, los juegos multijugador masivos en línea y el comercio financiero. Finalmente, discute tendencias como las redes omnipresentes, la computación móvil y ubicua, los sistemas multimedia distribuidos y la computación distribuida como servicio.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
121 vistas41 páginas

Informe Grupal Sistemas Distribuidos

Este documento presenta una introducción a los sistemas distribuidos. Explica las características clave de los sistemas distribuidos como la concurrencia, la falta de un reloj global y los fallos independientes de los componentes. Luego describe ejemplos como la búsqueda web, los juegos multijugador masivos en línea y el comercio financiero. Finalmente, discute tendencias como las redes omnipresentes, la computación móvil y ubicua, los sistemas multimedia distribuidos y la computación distribuida como servicio.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD NACIONAL DE UCAYALI

FACULTAD DE INGENIERÍA DE SISTEMAS E INGENIERÍA CIVIL


CARRERA PROFESIONAL DE INGENIERÍA DE SISTEMAS

LOS SISTEMAS DISTRIBUIDOS

Asignatura : Sistemas Distribuidos

Docente : Ing. Euclides Panduro Padilla

Presentado por :

❖ García Chávez Carlos Arón


❖ Gonzales Vela Cilia Edelmira
❖ Jiménez Neyra Audon

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.

Definimos un sistema distribuido como aquel en el que los componentes de hardware o


software ubicados en computadoras en red se comunican y coordinan sus acciones solo
pasando mensajes.

Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-


servidor"

Ilustración 1Protocolo Cliente-Servidor

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:

Concurrencia. - En una red de computadoras, la ejecución simultánea de programas es la


norma. Puedo hacer mi trabajo en mi computadora mientras tú haces tu trabajo en la tuya,
compartiendo recursos como páginas web o archivos cuando sea necesario.
Esta característica de los sistemas distribuidos permite que los recursos disponibles en la red
puedan ser utilizados simultáneamente por los usuarios y/o agentes que interactúan en la
red.

Ilustración 2 Ejemplo de Congruencia

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.

Ilustración 3 Parada de un computador

Ilustración 4 Aislamiento de la Red

Ilustración 5 Terminación anormal de un


programa

1.2 EJEMPLOS DE SISTEMAS DISTRIBUIDOS

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 relativamente localizados (como los que se encuentran, por ejemplo, en un


automóvil o avión).

 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.

 Sistemas integrados que admiten una experiencia de usuario interactiva sofisticada,


etc.

1.2.1 BUSQUEDA WEB

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:

 Hay más de 600 millones de blogs en el mundo en 2020.


 Se realizan más de 6 mil millones de búsquedas de Google por día.
 Google alcanza el billón de páginas. Webs únicas.
 63 mil millones de páginas web en la red.

Figura 1.1 Dominios de aplicación seleccionados y aplicaciones en red asociadas

6
1.2.2 JUEGOS EN LINEA MULTIJUGADOR MASIVO

La ingeniería de los MMOG representa un desafío importante para las tecnologías de


sistemas distribuidos, particularmente debido a la necesidad de tiempos de respuesta rápidos
para preservar la experiencia del usuario del juego. Otros desafíos incluyen la propagación
de eventos en tiempo real a los muchos jugadores y el mantenimiento de una visión coherente
del mundo compartido. Por lo tanto, esto proporciona un excelente ejemplo de los desafíos
que enfrentan los diseñadores de sistemas distribuidos modernos.
Se han propuesto varias soluciones para el diseño de juegos online 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.

 Adoptan enfoques completamente descentralizados basados en tecnología peer-to-


peer donde cada participante aporta recursos. (almacenamiento y procesamiento)
para adaptarse al juego.

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.

1.2.3 COMERCIO FINANCIERO

La tecnología de sistemas distribuidos con su necesidad, en particular, de acceso en tiempo


real a una amplia gama de fuentes de información (por ejemplo, precios y tendencias actuales
de las acciones, desarrollos económicos y políticos). La industria emplea aplicaciones de
comercio y monitoreo automatizadas.

Figura N° 1.2 Un ejemplo de sistema de comercio financiero

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

Los sistemas distribuidos están experimentando un período de cambios significativos y esto


se remonta a una serie de tendencias influyentes:

 La aparición de una tecnología de redes generalizada;


 La aparición de la informática ubicua junto con el deseo de apoyar la movilidad del
usuario en sistemas distribuidos;
 La creciente demanda de servicios multimedia;
 La visión de los sistemas distribuidos como una utilidad.

1.3.1 REDES OMNIPRESENTES E INTERNET MODERNO

La Internet moderna es una vasta colección interconectada de redes de computadoras de


muchos tipos diferentes:

Ilustración 8 Redes modernas

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.

1.3.2 COMPUTACION MOVIL Y UBICUA

La informática móvil es la realización de tareas informáticas mientras el usuario está en


movimiento o visitando lugares distintos de su entorno habitual.
La computación ubicua puede ocurrir al emplear cualquier dispositivo, en cualquier ubicación
y en cualquier formato.

Ilustración 10 Dispositivos móviles

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.

La computación ubicua y la móvil se superponen, ya que el usuario móvil puede, en principio,


beneficiarse de las computadoras que están en todas partes. Pero son distintos, en general.
La computación ubicua podría beneficiar a los usuarios mientras permanecen en un único
entorno, como el hogar o el hospital.

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

Otra tendencia importante es el requisito de soportar servicios multimedia en sistemas


distribuidos. El soporte multimedia puede definirse de manera útil como la capacidad de
admitir una variedad de tipos de medios de manera integrada. Se puede esperar que un
sistema distribuido admita el almacenamiento, transmisión y presentación de lo que a
menudo se denomina tipos de medios discretos, como imágenes o mensajes de texto. Un
sistema multimedia distribuido debería poder realizar las mismas funciones para tipos de
medios continuos, como audio y video; es decir, debe poder almacenar y ubicar archivos de
audio o video, transmitirlos a través de la red (posiblemente en tiempo real a medida que las
transmisiones emergen de una cámara de video), apoyar la presentación de los tipos de
medios al usuario y, opcionalmente también para compartir los tipos de medios entre un grupo
de usuarios.

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

Ilustración 12 Sistema Multimedia Google.

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:

proporcionar soporte para una gama (extensible) de formatos de codificación y


encriptación, como la serie de estándares MPEG (que incluye, por ejemplo, el popular
estándar MP3 también conocido como MPEG-I, Audio Layer 3) y HDTV.
proporcionar una gama de mecanismos para garantizar que se pueda alcanzar la
calidad de servicio deseada.
proporcionar estrategias de gestión de recursos asociadas, incluidas políticas de
programación adecuadas para respaldar la calidad de servicio deseada.
Proporcionar estrategias de adaptación para hacer frente a la situación inevitable en
los sistemas abiertos donde la calidad del servicio no se puede cumplir de manera
sostenida.

1.3.4 COMPUTACIÓN DISTRIBUIDA COMO UTILIDAD

Con la creciente madurez de la infraestructura de sistemas distribuidos, una serie de las


empresas están promoviendo la visión de los recursos distribuidos como una mercancía o
utilidad, trazar la analogía entre los recursos distribuidos y otros servicios públicos como el
agua o elcctricity. Con este modelo, los recursos son proporcionados por proveedores de
servicios apropiados y efectivamente alquilado en lugar de propiedad del usuario final. Este
modelo se aplica tanto a la física, recursos y servicios más lógicos:

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

Ilustración 13 Sistema de Computación Distribuida

completa de servicios para un alquiler eficaz, incluidos servicios como correo


electrónico y calendarios distribuidos. Google, por ejemplo, agrupa una variedad de
servicios bajo el banner Google Apps [[Link] 1]. Este desarrollo está
habilitado por estándares acordados para servicios de software.

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.

Las nubes generalmente se implementan en computadoras de clúster para proporcionar la


necesaria escala y rendimiento requeridos por dichos servicios. Una computadora de clúster
es un conjunto de computadoras interconectadas que cooperan estrechamente para
proporcionar una única e integrada capacidad de cálculo de rendimiento. La tendencia es
hacia la utilización de productos hardware tanto para las computadoras como para las redes
de interconexión. La mayoría de los clústeres Consisten en PCs básicas que ejecutan una
versión estándar (a veces reducida) de un sistema operativo como Linux, interconectado por
una red de área local. Empresas como HP, Sun e IBM ofrecen soluciones blade. Los
servidores Blade son mínimos elementos computacionales que contienen, por ejemplo,
procesamiento y almacenamiento (memoria principal)

Un sistema blade consta de una cantidad potencialmente grande de servidores blade


contenido dentro de un gabinete de blade. Otros elementos como potencia, refrigeración,
persistencia almacenamiento (discos), redes y pantallas, son proporcionados por el gabinete
o por soluciones virtualizadas. A través de esta solución, los servidores pueden ser mucho
más pequeños y también más baratos de producir que las PC básicas,

El objetivo general de las computadoras en clúster es proporcionar una variedad de servicios


en la nube, incluyendo capacidades informáticas de alto rendimiento, almacenamiento
masivo (por ejemplo, a través de centros de datos) y servicios de aplicaciones más completos,
como la búsqueda web (Google, por ejemplo, reliquias en una arquitectura informática de
clúster masiva para implementar su motor de búsqueda y otros servicios. La computación en
cuadrícula también puede verse como una forma de computación en la nube. Los términos
son en gran parte sinónimos y en ocasiones mal definido, pero la computación en cuadrícula
generalmente se puede ver como un precursor del paradigma más general de la computación
en la nube con un sesgo hacia el apoyo a aplicaciones científicas

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.

Ilustración 14 Compartir Recursos

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;

• implementaciones de diferentes desarrolladores.

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

La apertura de un sistema informático es la característica que determina si el sistema se


puede ampliar y volver a implementar de varias formas. La apertura de distribuidos sistemas
está determinada principalmente por el grado en que los nuevos servicios de intercambio de
recursos pueden agregarse y estar disponible para su uso por una variedad de programas de
cliente.
La transparencia no se puede lograr a menos que la especificación y documentación de las
interfaces de software clave de los componentes de un sistema están disponibles para el
software desarrollador. En una palabra, se publican las interfaces clave. Este proceso es
similar a la estandarización de interfaces, pero a menudo pasa por alto los procedimientos de
estandarización oficiales, que suelen ser engorrosos y lentos. Sin embargo, la publicación de
interfaces es solo el punto de partida para agregar y extender servicios en un sistema
distribuido. El desafío para los diseñadores es abordar la complejidad de los sistemas
distribuidos que constan de muchos componentes diseñados por Gente diferente.
Los diseñadores de los protocolos de Internet presentaron una serie de documentos
denominados
Solicitudes de comentarios”, o RFC, cada uno de los cuales se conoce por un número. Las
especificaciones de los protocolos de comunicación de Internet se publicaron en esta serie
en principios de la década de 1980, seguido de especificaciones para aplicaciones que se
ejecutan sobre ellos, como transferencia de archivos, correo electrónico y telnet a mediados
de la década de 1980. Esta práctica ha continuado y se forma la base de la documentación
técnica del Internct. Esta serie incluye discusiones, así como las especificaciones de los
protocolos. Se pueden obtener copias en [[Link]). Así, la publicación de los protocolos
de comunicación de Internet originales ha permitido una variedad de sistemas y aplicaciones
de Internet, incluida la Web, que se creará. Las RFC no son el único medio de publicación.

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

Muchos de los recursos de información que se ponen a disposición y se mantienen en Los


sistemas tienen un alto valor intrínseco para sus usuarios. Por tanto, su seguridad es de
considerable importancia. La seguridad de los recursos de información tiene tres
componentes: confidencialidad (protección contra la divulgación de personas no autorizadas),

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.

En ambos ejemplos, el desafío es enviar información confidencial en un mensaje a través de


una red de forma segura. Pero la seguridad no es solo una cuestión de ocultar los contenidos
de mensajes: también implica saber con certeza la identidad del usuario u otro agente en
cuyo nombre se envió un mensaje. En el primer ejemplo, el servidor necesita saber que el
usuario es realmente un médico, y en el segundo ejemplo, el usuario debe estar seguro de la
identidad de la tienda o del banco con el que están tratando. El segundo desafío aquí es
identificar un usuario remoto u otro agente correctamente, ambos desafíos pueden resolverse
mediante el uso de técnicas de cifrado desarrolladas para este fin. Se utilizan ampliamente
en Internet. Sin embargo, los siguientes dos desafíos de seguridad aún no se han cumplido
por completo:

Ataques de denegación de servicio: otro problema de seguridad es que un usuario puede


desear interrumpir un servicio por alguna razón. Esto se puede lograr bombardeando el
servicio, Con una cantidad tan grande de solicitudes inútiles que los usuarios serios no
pueden usar eso. Esto se denomina ataque de denegación de servicio. Ha habido varias
denegaciones de servicio ataques a servicios web conocidos, actualmente estos ataques son
contrarrestados por intentar atrapar y castigar a los perpetradores después del evento, pero
eso no es una solución general al problema. Contramedidas basadas en mejoras en el.

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

Los sistemas distribuidos operan de manera efectiva y eficiente en muchas escalas


diferentes, que van desde una pequeña intranet a Internet. Un sistema se describe como
escalable si permanecerá efectivo cuando hay un aumento significativo en el número de
recursos y el número De usuarios. Ha aumentado la cantidad de computadoras y servidores
en Internet dramáticamente. Es interesante notar el crecimiento significativo tanto en
computadoras como en servidores web en este período. Pero también que el porcentaje
relativo se está aplanando, una tendencia que se explica por el crecimiento de Computación
personal móvil. Un servidor web también puede estar alojado cada vez más en múltiples
computadoras.

Ilustración 18 Escalabilidad

El diseño de sistemas distribuidos escalables presenta los siguientes desafíos:


Controlar el costo de los recursos físicos: a medida que crece la demanda de un recurso,
Debería ser posible ampliar el sistema, a un costo razonable, para satisfacerlo. Por ejemplo,
Es probable que la frecuencia con la que se accede a los archivos en una intranet aumenta
el número de usuarios y ordenadores. Debe ser posible agregar computadoras servidor para

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.

Fecha Computadoras Servidores web Porcentaje


1993, julio 1.776.000 130 0,008
1995, julio 6.642.000 23.500 0,4
1997, julio 19, 540,000 1, 203,096 6
1999, julio 56, 218,000 6, 598,697 12
2001, julio 125, 8838,197 31, 299,592 25
2003, julio 200.000.000 42.298.371 21
2005, julio 353, 284,187 67, 571,581 19

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

1.5.5 MANEJO DE FALLAS

Los sistemas informáticos a veces fallan. Cuando ocurren fallas en el hardware o


software, los programas pueden producir resultados incorrectos o pueden detenerse

Ilustración 19 Manejo de Fallas

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.

Las fallas en un sistema distribuido son parciales, es decir, algunos componentes


fallan mientras otros continúan funcionando. Por lo tanto, el manejo de fallas es
particularmente difícil. Las siguientes técnicas para lidiar con fallas se analizan a lo
largo del libro:
Detección de fallas: se pueden detectar algunas fallas. Por ejemplo, las sumas de
comprobación pueden ser, se utiliza para detectar datos corruptos en un mensaje o
archivo. El capítulo 2 explica que es difícil o incluso imposible de detectar algunas
otras fallas, como un control remoto bloqueado servidor en Internet. El desafío es
gestionar en presencia de fallas que no se puede detectar, pero se puede sospechar.
Enmascaramiento de fallas: algunas fallas que se han detectado se pueden ocultar
o hacer menos grave. Dos ejemplos de ocultar fallas:

1. Los mensajes se pueden retransmitir cuando no llegan.


2. Los datos del archivo se pueden escribir en un par de discos de modo que, si
uno está dañado, el otro puede todavía ser correcto.

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.

El diseño de técnicas efectivas fomenta el mantenimiento de réplicas de datos que


cambian rápidamente. Hasta la fecha sin una pérdida excesiva de rendimiento es un
desafío. Los sistemas distribuidos proporcionan un alto grado de disponibilidad ante
fallas de hardware.
La disponibilidad de un sistema es una medida de la proporción de tiempo que está
disponible para utilizar. Cuando falla uno de los componentes de un sistema
distribuido, solo el trabajo que estaba / Un el uso del componente fallido se ve
afectado. Un usuario puede pasar a otra computadora " que estaban usando falla; un
proceso de servidor se puede iniciar en otra computadora.

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.

Ilustración 20 Sistema de Registros de Ofertas

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

La transparencia se define como ocultar al usuario y al programador de la aplicación la


separación de componentes en un sistema distribuido, de modo que el sistema se perciba
como un todo y no como una colección de componentes independientes. Las implicaciones
de la transparencia son una gran influencia en el diseño del software del sistema.

Ilustración 22 Transparencia

El Manual de Referencia de ANSA [ANSA 1989] y el Modelo de Referencia de la Organización


Internacional de Normalización para Procesamiento Distribuido Abierto (RM-ODP) [ISO 1992]
identifican ocho formas de transparencia. Hemos parafraseado las definiciones originales de
ANSA, reemplazando su transparencia migratoria por nuestra propia transparencia de
movilidad, cuyo alcance es más amplio:

30
Ilustración 23 En entornos de arquitectura Web encontramos algunos
ejemplos de cómo funciona

 La transparencia de acceso permite acceder a recursos locales y remotos utilizando


operaciones idénticas.
 La transparencia de la ubicación permite acceder a los recursos sin conocer su
ubicación física o de red (por ejemplo, qué edificio o dirección IP).
 La transparencia de simultaneidad permite que varios procesos operen
simultáneamente utilizando recursos compartidos sin interferencia entre ellos.
 La transparencia de la replicación permite que se utilicen varias instancias de
recursos para aumentar la confiabilidad y el rendimiento sin que los usuarios o los
programadores de aplicaciones conozcan las réplicas.
 La transparencia de fallas permite ocultar las fallas, lo que permite a los usuarios y
a los programas de aplicación completar sus tareas a pesar de la falla de los
componentes de hardware o software.
 La transparencia de la movilidad permite el movimiento de recursos y clientes
dentro de un sistema sin afectar el funcionamiento de usuarios o programas.
 La transparencia del rendimiento permite que el sistema se reconfigure para
mejorar el rendimiento a medida que varían las cargas.
 La transparencia de escala permite que el sistema y las aplicaciones se expandan
en escala sin cambiar la estructura del sistema o los algoritmos de la aplicación.
 Las dos transparencias más importantes son la transparencia de acceso y ubicación;
su presencia o ausencia afecta más fuertemente la utilización de recursos distribuidos.
A veces se los denomina conjuntamente transparencia de red. Como ilustración de la
transparencia del acceso, considere una interfaz gráfica de usuario con carpetas, que

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.

Ilustración 24 transferencia de Accesos

Como ejemplo de falta de transparencia en el acceso, considere un sistema distribuido que


no le permite acceder a archivos en una computadora remota a menos que utilice el programa
ftp para hacerlo, los nombres de los recursos web o las URL son transparentes para la
ubicación porque la parte de la URL que identifica un nombre de dominio de servidor web se
refiere a un nombre de computadora en un dominio, en lugar de a una dirección de Internet.
Sin embargo, las URL no son transparentes para la movilidad, porque la página web personal
de una persona no puede moverse a su nuevo lugar de trabajo en un dominio diferente; todos
los enlaces en otras páginas seguirán apuntando a la página original. En general, los
identificadores como las URL que incluyen los nombres de dominio de las computadoras
impiden la transparencia de la replicación. Aunque el DNS permite que un nombre de dominio
se refiera a varias computadoras, solo elige una de ellas cuando busca un nombre. Dado
que un esquema de replicación generalmente necesita poder acceder a todas las
computadoras participantes, necesitaría acceder a cada una de las entradas de DNS por su
nombre. Como ilustración de la presencia de transparencia en la red, considere el uso de
una dirección de correo electrónico como [Link]@[Link]. La dirección consta
de un nombre de usuario y un nombre de dominio. Enviar correo a dicho usuario no implica
conocer su ubicación física o de red. El procedimiento para enviar un mensaje de correo
electrónico tampoco depende de la ubicación del destinatario. Por lo tanto, el correo
electrónico dentro de Internet proporciona transparencia de ubicación y acceso (es decir,
transparencia de red). La transparencia deficiente también se puede ilustrar en el contexto

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.

Ilustración 25 transferencia de Movilidad

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.

Ilustración 26 Servicio de Calidad

Los problemas de confiabilidad y seguridad son fundamentales en el diseño de la mayoría de


los sistemas informáticos. El aspecto de desempeño de la calidad del servicio se definió
originalmente en términos de capacidad de respuesta y rendimiento computacional, pero se
ha redefinido en términos de capacidad para cumplir con las garantías de oportunidad, como
se analiza en los siguientes párrafos.
Algunas aplicaciones, incluidas las aplicaciones multimedia, manejan flujos de datos críticos
en el tiempo, que deben procesarse o transferirse de un proceso a otro a una velocidad fija.
Por ejemplo, un servicio de películas puede consistir en un programa cliente que recupera
una película de un servidor de video y la presenta en la pantalla del usuario. Para obtener un
resultado satisfactorio, los fotogramas sucesivos de vídeo deben mostrarse al usuario dentro
de unos límites de tiempo especificados.

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).

Ilustración 27 Las aplicaciones de video son un buen ejemplo de calidad de servicio al


cliente

1.6 ESTUDIO DE CASO: THE WORLD WIDE WEB

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.

Ilustración 28 Red Mundial

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.

Ilustración 29 Servidores web y navegadores web

HTML • El lenguaje de marcado de hipertexto [[Link] II] se utiliza para especificar el


texto y las imágenes que componen el contenido de una página web, y para especificar cómo
se presentan y formatean para su presentación al usuario.
URLS•El propósito de un localizador uniforme de recursos [[Link] III] es identificar un
recurso. De hecho, el término utilizado en los documentos de arquitectura web es
Identificador uniforme de recursos (URI), pero en este libro se utilizará el término más
conocido URL, que puede generar confusión. Los navegadores examinan las URL para
acceder a los recursos correspondientes. A veces, el usuario escribe una URL en el
navegador. Más comúnmente, el navegador busca la URL correspondiente cuando el usuario
hace clic en un enlace o selecciona uno de sus 'marcadores'; o cuando el navegador recupera
un recurso incrustado en una página web, como una imagen. Cada URL, en su forma
completa y absoluta, tiene dos componentes de nivel superior:

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):

Ilustración 31 sobre el proceso de comunicación según http

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.

Control de acceso simple: de forma predeterminada, cualquier usuario con conectividad de


red a un servidor web puede acceder a cualquiera de sus recursos publicados. Si los usuarios
desean restringir Para acceder a un recurso, pueden configurar el servidor para que emita un
"desafío" a cualquier cliente que lo solicite.

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.

Ilustración 32 paginas estáticas y dinámicas

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).

Discusión de la Web• El éxito fenomenal de la Web se basa en la relativa facilidad con la


que muchas fuentes individuales y organizacionales pueden publicar recursos, la idoneidad
de su estructura de hipertexto para organizar muchos tipos de información y la apertura de

Ilustración 33 páginas de servicio

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

Ilustración 34 páginas de servicio

41

También podría gustarte