SlideShare una empresa de Scribd logo
1 de 34
Sistemas Distribuidos 1
SISTEMAS
DISTRIBUIDOS
Sistemas Distribuidos 2
1. Introducción:
1.1. Fundamentos:
¿Qué es un Sistema Distribuido?
Antes de definir lo que es un Sistema Distribuido, vamos a definir un término
más general: La Computación Distribuida, podemos definirla de muchas
maneras, este término se utiliza indiscriminadamente para referirse a cualquier
sistema en el que múltiples agentes autónomos, cada uno con capacidades de
cómputo individual, se comunican entre sí y afectan mutuamente su
comportamiento. Los agentes, usualmente llamados procesadores, procesos o
nodos, pueden ser desde computadoras completas hasta autómatas celulares
con capacidad de cómputo y memoria muy limitados que se pueden comunicar
mediante mensajes.
La Computación Distribuida hace referencia a cualquier evento en el cual se
maneja un sistema en una red de computadoras y trata de describir las
tendencias hacia la funcionalidad distribuida: sistemas distribuidos,
procesamiento distribuido, bases de datos distribuidas y cualquier otro término
computacional que sea distribuido. Podemos decir entonces, que la
Computación Distribuida se refiere a los servicios que provee un Sistema de
Computación Distribuido.
Una de las primeras caracterizaciones de un Sistema Distribuido fue realizada
por Enslow, ya en 1978, que le atribuye las siguientes propiedades:
o Está compuesto por varios recursos informáticos de propósito general,
tanto físicos como lógicos, que pueden asignarse dinámicamente a tareas
concretas.
o Estos recursos están distribuidos físicamente, y funcionan gracias a una red
de comunicaciones.
o Hay un sistema operativo de alto nivel, que unifica e integra el control de
los componentes.
o El hecho de la distribución es transparente, permitiendo que los servicios
puedan ser solicitados especificando simplemente su nombre (no su
localización).
o El funcionamiento de los recursos físicos y lógicos está caracterizado por
una autonomía coordinada.
A pesar del tiempo transcurrido, esta definición sigue siendo, en esencia, válida.
Así, para Coulouris un sistema distribuido es aquél que está compuesto por
varias computadoras autónomas conectadas mediante una red de
comunicaciones y equipadas con programas que les permitan coordinar sus
actividades y compartir recursos. Bal ofrece una definición muy similar: ``Un
Sistemas Distribuidos 3
sistema de computación distribuida está compuesto por varios procesadores
autónomos que no comparten memoria principal, pero cooperan mediante el
paso de mensajes sobre una red de comunicaciones''. Y según Schroeder, todo
sistema distribuido tiene tres características básicas:
o Existencia de varias computadoras. En general, cada una con su propio
procesador, memoria local, subsistema de entrada/salida y quizás incluso
memoria persistente.
o Interconexión. Existen vías que permiten la comunicación entre las
computadoras, a través de las cuales pueden transmitir información.
o Estado compartido. Las computadoras cooperan para mantener algún tipo
de estado compartido. El funcionamiento correcto del sistema se
describirse como el mantenimiento de una serie de invariantes globales
que requiere la coordinación de varias computadoras.
Como lo hemos observado, el término de Computación Distribuida se define de
varias maneras y lo mismo se aplica al término de Sistema Distribuido, así que
en lugar de seguir dando más definiciones de estos términos, nos
concentraremos en el análisis de las características más importantes de los
Sistemas Distribuidos, de esta manera podremos construiruna definición propia
de lo que es un Sistema Distribuido al finalizar este capítulo.
Una característicamuyimportanteesquelas diferenciasentrelas computadoras
y las maneras en que estas se comunican no son transparentes para el usuario
final,esto mismo aplicaparalaorganizacióninternadelsistemadistribuido.Otra
característica importante es que los usuarios y las aplicaciones pueden
interactuar con un Sistema Distribuido de manera consistente y uniforme, sin
importar donde y cuando se lleve a cabo la interacción.
Todo Sistema Distribuido bebe también ser relativamente fácil poder expandir,
lo cual se logra al tener computadoras independientes, pero al mismo tiempo
“esconder” las funciones de dichas computadoras en el sistema. Normalmente
un sistema distribuido debe de estar siempre disponible a pesar de que ciertas
partes que lo conforman puedan no estar funcionando. Los usuarios y las
aplicaciones no deben de notar en ningún momento que estas partes están
siendo reemplazadas o reparadas, o que se han agregado nuevas partes al
sistema para poder dar servicio a más usuarios o aplicaciones.
Características de un Sistema Distribuidos:
Cualquier diseñador de sistemas debe tener los conocimientos necesarios para
enfrentarse a todas las complicaciones que pueden surgir al momento de
considerar los requerimientos para el desarrollo de un sistema distribuido. A
continuación explicaremos cada una de las características de los Sistemas
Distribuidos, según Coulouris son estas características, los desafíos que
presentan los sistemas distribuidos.
Sistemas Distribuidos 4
a) Heterogeneidad:
Al hablar de heterogeneidad nos referimos a la variedad y diferencia que
podemos encontrar en los elementos que componen una red de
computadoras sobre la que se ejecuta un sistema distribuido, dicha
heterogeneidad no sólo se aplica a las redes y al hardware de las
computadoras, sino también a los sistemas operativos, los lenguajes de
programación y las implementaciones en las que trabajan los diferentes
desarrolladores.
Un ejemplo de esto lo podemos ver muy claro en Internet, ya que es una red
que esta conformada por muchos tipos de redes (Figura 1) cuyas diferencias
se encuentran enmascaradas, puesto que todas las computadoras que se
conectan a este utilizan los protocolos de Internet para comunicarse una con
otra, así una computadora conectada a una red Ethernet puede comunicarse
conotracomputadoraconectadaaunaredTokenRing,bastaconquesehaga
una implementación de los protocolos de Internet para cada una de esas
redes.
Figura 1. Un esquemaclásico de la conexión a Internet
Otro ejemplo lo podemos ver en los lenguajes de programación y en las
aplicaciones escritas por diferentes programadores; en el caso de los
lenguajesde programaciónesimportantetenerencuentalasdiferenciasque
puede haber en la representación de los caracteres y estructuras de datos
como cadenas de caracteres y registros, las cuales pueden variar y pueden
ocasionar conflictos entre programas que necesitan comunicarse entre ellos.
De igual manera dos programas que son desarrollados por programadores
diferentes tienen que utilizar estándares comunes para la comunicación en
red y para la representación de los datos elementales y las estructuras de
Sistemas Distribuidos 5
datos en los mensajes, ya que si no se cuenta con dichas similitudes, los
programas no podrán comunicarse entre sí aunque se hayan desarrolladoen
el mismo lenguaje de programación.
Un términoquenopodemosdejardemencionaralhablardeheterogeneidad
es el de Middleware (Figura 2); este término se aplica a la capa de software
queproveeunaabstracciónde programación,asícomounenmascaramiento
de la heterogeneidad subyacente de las redes, hardware, sistemas
operativos y lenguajes de programación; además, el Middleware
proporciona un modelo computacional uniforme al alcance de
programadores de servidores y aplicaciones distribuidas que permite la
invocación sobre objetos remotos, notificación de eventos remotos, acceso a
bases de datos remotas y procesamiento distribuido de transacciones.
Algunos ejemplos de Middleware son CORBA y Java RMI.
Figura 2. Un sistema distribuido organizado como Middleware
Otro término importante para este apartado es el de código móvil, que se
emplea para referirse al código que pude ser enviadode una computadora a
otra para que esta última la ejecute, un ejemplo de un código móvil son los
applets de java, que son enviados del servidor a la computadora del cliente
para que este los ejecute en su explorador de Internet. Al implementar un
código de este tipo podemos encontrarnos con el problema de que el
conjunto de instrucciones (a nivel máquina) de una computadora puede no
ser el apropiadoparaotramáquina,porejemplo,unusuariodeunaPCpuede
enviarunarchivoejecutableaunusuariodeLinuxyeste últimonoserá capaz
de ejecutar dicho archivo. Para solucionar este problema se han creado lo
que se conocen como máquinas virtuales, las cuales proveen un modo de
crear código ejecutable sobre cualquier hardware, ya que el compilador de
un lenguaje concreto generará un código para una máquina virtual y esta se
encargará de “traducir” dicho código al apropiado para un hardware
particular, así, un compilador de Java producirá un código para la máquina
virtual de Java, y esta última sólo necesitará ser implementada una sola vez
para cada máquina en la que se va a ejecutar.
b) Extensibilidad y Apertura:
Sistemas Distribuidos 6
La extensibilidad y la apertura son dos características de un sistema
distribuido que están ampliamente ligadas la una con la otra. Algunos
autoresdicenqueunsistemaabiertodebedeser extensibleyotrossostienen
queun sistema extensiblepuedeser etiquetadocomounsistemaabierto.De
cualquier manera lo que es importante saber y tener en cuenta es que un
sistema distribuido debe de contar con ambas características.
Un sistema distribuido abierto es un sistema que ofrece servicios
desarrollados de acuerdo a reglas estandarizadas que describen la sintaxis y
la semántica de dichos servicios. Por ejemplo, en una red de computadoras,
estas reglas son las que regulan el formato, contenido y significado de los
mensajes que se envían y se reciben a través de dicha red. Estas reglas son
formalizadas en protocolos. En el caso de los sistemas distribuidos, los
servicios se especifican generalmente a través de interfaces que por lo
general son descritas en un Lenguaje de Definición de Interfaz (IDL por sus
siglas en ingles), dicho lenguaje especifica los nombres de las funciones que
están disponibles así como los parámetros de entrada, los valores de salida y
los posibles errores que pueden obtenerse al invocarse dichas funciones.
Si la definición de una interfaz se hace de manera adecuada, esta permitirá
que dos procesos puedan comunicarse entre sí, siempre y cuando ambos
procesos cuenten con la misma interfaz. Esto también permite que cada dos
desarrolladores independientes construyan su propia implementación de
dichas interfaces, lo cual conlleva al desarrollo de dos sistemas distribuidos
desarrollados por separado que operan de la misma manera.
Una especificación se considera adecuada cuando es completa y neutral.
Completa significa que todo lo necesario para hacer una implementación de
la interfaz ha sido especificado y que no será necesario que el propio
desarrollador sea quien agregue detalles específicos de la implementación.
Neutral significa que las especificaciones no deben tener ninguna tendencia
hacia como se debe de hacer la implementación de dicha especificación. La
completitud y la neutralidad son muy importantes para la interoperabilidad
y la portabilidad, que son características que complementan la apertura de
un sistema distribuido. La interoperabilidad, también conocida como
compatibilidad, caracteriza el gradoen el que la implementación de sistemas
o componentes de diferentes fabricantes pueden coexistir y trabajar juntos,
siempre y cuando se utilicen los servicios como este especificado por el
estándar común bajo el cual dichos sistemas fueron desarrollados. La
portabilidad por su parte caracteriza a que nivel puede ser ejecutada una
aplicación desarrollada para un sistema distribuido “A” sobre un sistema
distribuido “B” que implementa las mismas interfaces del sistema “A”, pero
sin hacerle modificaciones.
Uno de los principales objetivos que se persiguen al desarrollar un sistema
operativo abierto, es que este sea flexible, lo que implica que dicho sistema
puede ser integrado por diferentes componentes (tanto de hardware como
Sistemas Distribuidos 7
de software), posiblemente de diferentes proveedores, que nuevos
componentes pueden agregarse al sistema y que componentes existentes
pueden ser reemplazados sin afectar el funcionamiento de los componentes
ya existentes, en otras palabras, un sistema distribuido abierto debe de ser
extensible.
Para lograr la flexibilidad en un sistema distribuido abiertoes necesario que
el sistema este organizado en módulos o componentes relativamente
pequeños y fáciles de reemplazar, esto implica que además de definir las
especificaciones y la documentación de las interfaces de alto nivel a las que
tienen acceso los usuarios y las aplicaciones, también es necesario definir las
especificaciones de las interfaces de las partes internas que componen el
sistema y describir de que manera interactúan entre sí.
c) Seguridad:
La gran mayoría de la información que maneja un sistema distribuido tiene
unaltovalorparalos usuarios dedichosistema, y es poreso quela seguridad
de la información juega un papel clave al momento de desarrollar dicho
sistema.
La seguridad de la información es todo lo que concierne a asegurar que no
ocurrirán cosas malas con los mensajes que envían los clientes para solicitar
información a un servidor, y por su puesto, con la información que estos
reciben como respuesta a sus peticiones. No basta con asegurar que estos
mensajes serán transmitidos de forma oculta, sino que también hay que
asegurar que la información sea entregada únicamente a quien debe de ser
entregada y que esto se hará siempre de forma correcta y en el momento en
que se requiere. La seguridad es relativa a la amenaza que cada sistema
afronta, afecta a todos los puntos del sistema y debe de ser fácil de obtener.
La seguridad debe ofrecer los siguientes servicios:
o Confidencialidad, es decir, el manejo privado de la información:
proteger la información de ser accedida por usuarios no autorizados.
o Autentificación,ocapacidaddeasegurarlaidentidaddeunusuario.
o Integridad, que asegura que la información que empleamos no ha
sido manipulada, alterada o corrompida desde el origen.
o No repudio, de una operación de emisión y recepción de información
por parte de los agentes.
o Control de acceso a la información y/orecursos administrados por un
sistema.
o Disponibilidad de los recursos necesarios de un sistema cuando estos
sean requeridos, lo que protege la información contra interferencia
con los procedimientos de acceso a los recursos.
Sistemas Distribuidos 8
El alto valor de que tiene la información es la razón principal por la que esta
se puede ver amenazada de muchas formas, entre las principales podemos
encontrar:
Interrupción: Destruye la información o la inutiliza. Ataca la disponibilidad.
Interceptación: Obtiene acceso a información. Ataca la confidencialidad.
Modificación: Modifica la información. Ataca la integridad.
Fabricación: Falsifica la información. Ataca la autenticidad.
Para defenderse de este tipo de amenazas se han desarrollado diversas
técnicas de encriptación, firmas digitales, implementación de barreras
perimetrales (firewalls), modelos de seguridad internos y externos, etc. Sin
embargo, estas técnicas parecen no ser suficientes para evitar que intrusos
logren interferir con el flujo de información óptimo de un sistema, ya que
encuentran formas de “brincarse” las barreras de seguridad de muchas
organizaciones y además siguen ideando nuevas formas de atacar y
amenazar la información, un ejemplo de estos nuevos ataques son los
ataques de denegación de servicio. Estos ataques consisten en bombardear
un servicio con un gran número de peticiones simultáneas (y por lo general
Sistemas Distribuidos 9
inútiles) de modo que el sistema se colapse, obstaculizando el servicio a los
usuarios que desean utilizarlo. Como hoy en día la capacidad de los sistemas
distribuidos ha crecido mucho, en ocasiones resulta muy difícil o incluso
imposiblebloquearelservicioutilizandounasolacomputadoraatacante,por
lo que ahora se han desarrollado los ataques de denegación de servicio
distribuidos, los cuales hacen uso de miles o incluso millones de
computadoras para generarlas peticiones al sistema que se desea bloquear,
por lo que bloquear un ataque de esta magnitud resulta sumamente
complicado.
Si bien no podemos asegurar que un sistema distribuido sea cien por ciento
seguro, es importante contar con un esquema de seguridad lo más robusto
posible, que a pesar de no ser inmune a todo tipo de ataques, si será capaz
de frenar la gran mayoría de dichos ataques. Algunas recomendaciones muy
útiles para los desarrolladores, administradores e implementadotes de un
sistema distribuido se presentan a continuación:
o Efectuar un análisis de riesgos
Estose suele mencionarenlaliteraturacomoelprimerpasoa realizarse
cuando se plantea la seguridad en un sistema. La idea es muy sencilla:
trazar todos los elementos que conforman nuestro sistema (hardware
y software) y observar cuáles involucran más o menos riesgo. Esto
desembocará en un plan de seguridad cuyo objetivo es disminuir el
riesgo total del sistema, que se puede modelar como la suma de los
riesgos de sus componentes:
RIESGO TOTAL = RIESGO (componente 1) + RIESGO (componente 2)...
El riesgo de cada componente está en función directa a las pérdidas que
ocasionaría el que éste deje de operar, así como en función de cuán
vulnerable es dicho componente en este momento. Por ejemplo, una
base de datos de clientes involucra un gran riesgo debido al gran valor
que la información representa para una organización; pero una simple
PC Windows de la misma organización conectada directamente al
Internet (sin firewall/proxy de por medio) también lo representa,
debido a que puede ser objeto de un ataque desde el exterior, con el
posible riesgo de fácil propagación hacia otros computadores de
nuestra red.
o Lo más valioso debe alejarse de lo más vulnerable
En la fórmula del "riesgo" propuesta arriba, es evidente que los
componentes de nuestro sistema con alto valor y alta vulnerabilidad
Sistemas Distribuidos 1
0
serán de lejos los que presenten mayor riesgo. Sin embargo, en muchos
casos noes sencillodisminuirel valordeciertocomponente(yportanto
la pérdida en caso de problemas), y tampoco se puede eliminar
completamente la vulnerabilidad del mismo (por ejemplo, si está de
cara a Internet.) En este caso lo que conviene es separar o dividir este
componente en dos partes suficientemente alejadas e independientes
a fin de que el riesgo total disminuya. Por ejemplo, los portales de
comercio electrónico deben dar cara a Internet (siendo vulnerables en
principio) y a la vez manejar información muy costosa (como
transacciones con tarjeta de crédito.) Esto los convierte en un sistema
de alto riesgo. Sin embargo es casi universal la separación que se
efectúa entre los componentes dedicados a dar cara a Internet (como
los Web Servers) y los componentes que manipulan la información
comercial (generalmente sistemas DBMS.) En términos prácticos, esto
significa que el hacker no puede acceder directamente al DBMS (lo que
sería catastrófico), y sólo podría atacar al Web Server, lo que en
principio no acarrea mayores consecuencias.
o Mantener las cosas simples
Un sistema complejo es más difícil de asegurar y potencialmente
proporciona una mayor cantidad de puertas abiertas a los atacantes. En
general, es recomendable intentar dividir el problema mediante la
simplificación de la configuración, para así identificar los puntos o rutas
de control vulnerables para incrementar la seguridad.
La seguridad debe estar en todos los niveles.
Esto se puede expresar más sencillamente como: no confiar el sistema
a un único mecanismo de seguridad.
La información fluye a través de los distintos componentes y/o capas
del sistema y son muchas las instancias en las que se puede mejorar su
seguridad. La recomendación estipula que utilicemos todas estas
instancias a pesar de que en principio puedan parecer redundantes. Por
lo general los administradores tienden a preocuparse por un único
punto de acceso desde donde supuestamente hay una gran
probabilidad de ser atacados (por ejemplo, la conexión a Internet.) Por
tanto se invierte esfuerzo y dineroen controlar este únicopunto bajo la
asunción de que es la única puerta de entradaa los maleantes y que por
tanto, tras asegurarla, todo el sistema quedará seguro. Esto tiene dos
problemas:
Muchos ataques o "vulnerabilidades" se originan (de forma inocente o
intencional) desde dentrode la organización.
El sistema que controla la "puerta" siempre puede fallar.
Sistemas Distribuidos 1
1
Esto obliga a implementar la seguridad no en un único punto
evidentemente vulnerable, sino en todos los lugares por donde fluye la
información al interior de cada componente involucrado.
Encriptar tantocomo sea posible
La encriptación es un tema complejo perocuya implementación resulta cada
vez más sencilla conforme aparecen más productos. Los cambios del año
pasado en la legislación norteamericana con respecto a la exportación de
productos que encriptan, son un incentivoclaro para que los desarrolladores
y vendedores se interesen más en el tema.
Engeneral,los canales decomunicaciónmásvulnerablesodemayorcercanía
al público requieren una encriptación "más fuerte", es decir, más difícil de
descifrar por los curiosos o atacantes. Cierta información conlleva más riesgo
que otra, y por tanto requerirá un nivel de encriptación diferenciado. Las
herramientas capaces de hacer esto son muchas, dependiendo del contexto
en que nos encontremos. Por ejemplo, los sistemas DBMS más avanzados
incorporan la encriptación como una opción normal para los datos
almacenados, generalmente bajo esquemas propietarios.
La tecnología de encriptación de información destinada a pasar a través de la
redhaevolucionadobastante,haciéndosepopulareltérminoVPN parahacer
referencia a canales que encriptan la información de un modo más o menos
transparente. Hay soluciones propietarias así como estándares
relativamente implementados como IP Sec. Ciertas aplicaciones estándares
han recibido soluciones de encriptación también estándar. El caso del Web
encriptado bajo SSL (HTTPS) juntocon la industria de certificados digitales es
el caso más conspicuo. De igual modo los estándares para correoelectrónico
PGP (o derivados) y S/MIME son integrados cada vez con mayor frecuencia
en las aplicaciones de los usuarios finales.
En nuestra organización deberíamos encriptar todo lo que sea posible. La
razón de esto es evidente si de lo que se trata es de enviar un mensaje
privado por Internet. Sin embargo, al interior de la organización la
encriptación puede ayudar también. Naturalmente hay que sopesar los
inconvenientes que trae la encriptación en términos de incomodidad de uso,
costo de licencias, ciclos de CPU, etcétera; con el hecho de que cierta
información es definitivamente de carácter público y por tanto no tiene
sentido que esté encriptada.
Además de estas hay muchas más recomendaciones de seguridad que
podemos mencionar, por ejemplo: no confiar en la autenticación estándar,
no usar la configuración "estándar", educar a los usuarios, ejecutar sólo los
servicios imprescindibles, mantenerse al día con las actualizaciones y hacer
Sistemas Distribuidos 1
2
chequeos regulares, establecer planes de contingencia y sistemas de
respaldo,mantenercontactoconelproveedordelíneasdecomunicación,no
permitirconexionesdirectasdesdelaredinternaaInternet,hacerusodeuna
red perimétrica o zona desmilitarizada, prácticas de programación segura,
vigilancia, establecimiento de políticas, etc.
d) Escalabilidad:
La escalabilidad es una de las características más importantes para los
desarrolladores de un sistema distribuido. Se dice que un sistema es
escalable si logra conservar su efectividad cuando hay el número de recursos
y el número de usuarios incrementa significativamente. La escalabilidad de
un sistema pude medirse en tres aspectos diferentes:
Con respecto a su tamaño: lo que significa que se pueden agregar más
usuarios y más recursos al sistema de una manera muy fácil.
Con respecto a su localización o área de implementación: lo que significa que
tanto los usuarios como los recursos pueden estar en locaciones remotas y
separadas el uno del otro.
Con respecto a su administración: lo que significa que puede ser fácil de
administrar a pesar de que se utiliza en diferentes organizaciones
independientes que cuentan con diferentes políticas de seguridad y que
hacen un uso particular del sistema. Desafortunadamente, un sistema que es
escalableen unoomás deestos aspectosporlogeneralafectael rendimiento
del sistema conforme al crecimiento del mismo.
Problemas de la Escalabilidad
Cuando se necesita escalar un sistema a un nivel más alto es muy común que
surja algún tipo de problema. Si consideramos la escalabilidad con respecto
al tamaño de un sistema, nos encontramos con las limitaciones que
presentan los servicios, los datos y los algoritmos centralizados.
En muchos sistemas distribuidos es común encontrarservicios centralizados,
es decir, que son implementados en un mismo servidor, lo que puede
ocasionar un problema muy obvio: este servidor puede convertirse en un
cuello de botella si el número de usuarios crece, y a pesar de tener una
capacidad de procesamiento y almacenamiento virtualmente ilimitada, la
comunicación con este servidor puede llegar a tener un límite y
eventualmente impedir el crecimiento del sistema. Desafortunadamente el
uso de un sólo servidor puede ser inevitable, ya que por lo general tenemos
servicios que trabajan con información muy sensible y que tiene que ser lo
más segura posible, por lo que el tener esta información almacenada en
diferentes servidores puede llegara poner la información en riesgoy hacer el
sistema más vulnerable.
Sistemas Distribuidos 1
3
De la misma manera, el almacenamiento centralizado de la información
puede ser un grave problema para un sistema distribuido, ya que a pesar de
que un sólo servidor nos puede ofrecer la capacidad de almacenamiento que
necesitamos, es muy poco probable que dicho servidor permita el acceso
simultáneo a miles o incluso millones de usuarios que desean consultar la
información almacenada en él. Un ejemplo de esto es el Sistema de Nombre
de Dominio, que a pasar de poder almacenar todos los registros en una sola
base de datos de varios gigabytes, no podría daruna respuesta a los millones
de usuarios de Internet que accedan este servicio simultáneamente.
El uso de algoritmos centralizados es en teoría la solución óptima a un
problema de computación distribuida, sin embargo, en la práctica podemos
ver que el uso de este tipo de algoritmos en un sistema distribuidogrande no
es una buena idea, ya que colectar y transportar los datos de entrada y salida
del sistema hacia un sólo punto en el que se computan dichos datos pudiese
sobrecargar parte de la red con todos los mensajes que necesita enviar y
recibir, además de que el computo de toda la información en una sola
máquina tiene más riesgo a fallos y puede resultar más tardada. La solución
a este problema es el uso de algoritmos descentralizados, los cuales cuentan
conciertascaracterísticasquelosdiferenciandelosalgoritmoscentralizados,
entre las que podemos mencionar:
Ninguna máquina tiene información completa del estado del sistema.
Cada máquinatomadecisionespropiasbasándosesolamenteeninformación
local.
Problemas o fallos de una máquina no arruinan el procesamiento de todo el
algoritmo.
No necesariamente se cuenta con un reloj global (algoritmos no
sincronizados).
A pesarde queen unaLAN pudiesesincronizarselaejecucióndeunalgoritmo
descentralizado, este mismo procedimiento pudiese ser muy complicado o
incluso imposible si el algoritmo esta distribuidoen una red más amplia, por
lo que no se debe de depender en la existencia de un reloj global para hacer
posible la ejecución de un algoritmo de este tipo.
Por otro lado tenemos los problemas de la escalabilidad con respecto a la
localización o área de implementación de un sistema distribuido. Una de las
principales razones por las cuales resulta difícil escalar los sistemas
distribuidos que existen actualmente, es que dichos sistemas fueron
diseñados para trabajar redes de acceso locales (LANs) y que están basados
en una comunicación síncrona. En este tipo de comunicación el cliente hace
la solicitud de un servicio y hace un bloqueo de la comunicación hasta que
recibe la respuesta. Este acercamientoporlo general trabaja bien en LANs en
las que la comunicación entre dos máquinas por lo general no toma más de
Sistemas Distribuidos 1
4
algunos cientos de microsegundos. En el caso de las WANs, tenemos que
tomar en cuenta que la comunicación entre los procesos pudiese tomar
varios cientos de milisegundos, lo que representa un alentamiento muy
considerable del sistema.
Otro problema a considerar es que la comunicación en una WAN es poco
confiable y en la gran mayoría de los casos es punto a punto, al contrario de
las redes locales que generalmente son muy confiables y permiten hacer
difusiones o transmisiones de tipo “broadcast”, lo que hace mucho más fácil
el desarrollo de sistemas distribuidos.
La escalabilidad con respecto a la localización o área de implementación esta
directamente relacionada con los problemas de soluciones centralizadas
comentados anteriormente. Si tenemos un sistema con muchos
componentes centralizados, es muy claro que la escalabilidad del área de
implementación será imitada gracias a los problemas de desempeño y
confiabilidad que trae consigo la implementación en un área de redes
extensa. Además, los componentes centralizados también provocan el
desperdicio de recursos de red.
Finalmente, podemos mencionar los problemas que acarrea la escalabilidad
de la administración de un sistema distribuido. Este problema se da cuando
unsistema distribuidodeexpandeaotrodominio,queporlogeneralcontará
con diferentes políticas de uso y pago de recursos, administración y
seguridad. Por lo general cuando esto pasa se deben de tomar al menos dos
tipos de medidas de seguridad:
El sistema distribuido tiene que protegerse de ataques malignos
provenientes del nuevo dominio, y restringirel acceso a los servicios y datos
que no están a disponibilidad de los usuarios del mismo.
El nuevodominiotienequeprotegersedeataquesmalignosprovenientesdel
sistema distribuido. Básicamente, el nuevo dominio no sabe que tipo de
información puede esperar del código enviado por el nuevo dominio por lo
que pudiera decidir limitar los permisos de acceso a dicho código.
Técnicas de Escalabilidad
Una vez quemencionamosyalosproblemasdelaescalabilidad,analizaremos
algunas maneras de solucionar dichos problemas. Como los problemas de
escalabilidad de los sistemas distribuidos se manifiestan como problemas de
rendimiento causados por la capacidad limitada de servidores y de las redes
de comunicaciones, existen solamente tres técnicas de escalabilidad:
eliminar la latencia de las comunicaciones, distribución y replicación.
Eliminar la latencia de las comunicaciones es útil en el caso de querer lograr
la escalabilidad geográfica de un sistema, la idea básica es simple: tratar de
evitar la espera de respuestas a las peticiones que se hagan a servicios
Sistemas Distribuidos 1
5
remotos lo más que se pueda. Esencialmente, esto significa que se tiene que
construir la aplicación que realiza las peticiones de tal manera que use
solamente métodos de comunicación asíncronos, es decir, que el cliente
envía la petición al servidor, mientras espera la respuesta el cliente
aprovecha ese tiempo para realizar tareas locales más importantes y cuando
recibe la respuesta del servidor, el proceso que se estaba realizando se
interrumpe y se atiende la respuesta recibida. Esta solución parece fácil, sin
embargo, hay muchas aplicaciones que no pueden hacer un uso efectivo de
la comunicación asíncrona, por ejemplo, aplicaciones interactivas en las que
el usuario no tiene nada mejor que hacer más que esperar la respuesta del
servidor, por que esta se tiene que dar lo más rápido que sea posible. En
dichos casos, es mucho mejor solucionar el problema de la latencia
reduciendo el tráfico generado entre el cliente y el servidor cuando se
comunican entre sí; esto lo podemos lograr moviendo parte de la
computación que normalmente se hace del lado del servidor al cliente, para
que así sea el mismo proceso que hace la solicitud del servicio quien tenga
que procesarlo.
Otra técnica importante para lograr la escalabilidad es la distribución, que
consiste en tomar un elemento, separarlo en partes pequeñas y distribuir
esas partes en todo el sistema. Un ejemplo de un sistema distribuido que
hace uso de la distribución es el servicio de nombre de dominio(DNS), el cual
esta distribuido en diferentes servidores que permiten el acceso a la misma
información a todos los usuarios, sin necesidad de tener un sólo servidor que
proporcione este servicio.
En la mayoría de los casos, los problemas de escalabilidad los vemos
reflejados en el rendimiento del sistema, por lo que generalmente la
replicación de los componentes del sistema distribuido puede resultar ser
unabuenaidea.La replicaciónaumentaladisponibilidaddeloscomponentes
del sistema y además ayuda a balancear la carga entre los componentes que
se replican, con lo que se logra una mejora del rendimiento del sistema. Si
consideramos un sistema que se encuentra distribuido en una red muy
extensa, el hecho de tener una copia de algún componente más cerca,
también mejora el rendimiento del sistema puesto que soluciona los
problemas de latencia de las comunicaciones que ya mencionamos
anteriormente.
Una forma especial de replicación es el Cacheo, el cual consiste en guardar
una copia de algún recurso (por lo general, de datos) de forma temporal en
un lugar cercano al cliente, para que éste lo pueda acceder más fácilmente.
En contraste con la replicación, el cachear un recurso es una decisión que es
tomadaporelcliente,ynoporlosdiseñadotesdelsistema. Un problemamuy
serio que puede traer el cacheo, es que las copias que se hacen del recurso (o
de datos) pueden no actualizarse a su debido tiempo, por lo que al haber
varias copias diferentes del mismo recurso, lo que provoca problemas de
consistencia dentro del sistema; el nivel de inconsistencia que pueda ser
Sistemas Distribuidos 1
6
tolerado por un sistema depende del uso que se le da a al recurso que se esta
replicando, en el caso de páginas Web estáticas, por ejemplo, pudiese ser
bastante tolerable, sin embargo, en el caso de páginas dinámicas o de
sistemas en tiempo real, la replicación puede traer consigo muchos
problemas.
e) Tratamiento de Fallos:
El fallo tanto del hardware como el software es algo prácticamente
inevitable, y por más confiable que pueda parecer algún componente,
siempre es importante estar preparado para cuandoeste falle. En un sistema
centralizado por lo general el fallo de cualquier componente del sistema
provoca que todos los servicios que este ofrece dejen de funcionar, en
cambio, en un sistema distribuido, los fallos son parciales, puesto que solo
afectan a los servicios que el componente que fallo este prestando, mientras
que otros servicios que prestan otros componentes siguen funcionando.
El tratamiento de fallos en un sistema distribuido es una tarea difícil, pero
quese puedelograrsise utilizanlas técnicasadecuadas,segúnel sistema que
se desee proteger. Algunas de las técnicas más comunes son:
Detección de Fallos: obviamente noes posible tratar un fallo si este no se ha
detectado, sin embargo, la detección de un fallo dentro de un sistema
distribuido puede no ser tan sencillo como parece, recordemos que además
de componentes de hardware y software, los sistemas distribuidos operan
gracias a la transmisión de mensajes, y el funcionamiento del sistema
depende en gran parte de estas transmisiones de datos entre los diferentes
componentes; un fallo en la transmisión de datos entre componentes no es
fácil detectar, pero es algo que podemos esperar (dependiendo del medio
por el que se haga la transmisión y otras condiciones) y al saber que existe la
posibilidad de ese fallo, podemos monitorear y aplicar técnicas que aseguren
que dicha transmisión siempre sea correcta.
Enmascaramiento de Fallos: una vez que un fallo es detectado, es
importante encontrar la manera para que un usuario del sistema no note
dicho fallo y que pueda seguir utilizando el sistema de manera normal, esto
es, ocultar los fallos del sistema y encargarse de que los servicios que se
ofrecen al cliente nunca sean interrumpidos. Son muchos ejemplos del
enmascaramiento de fallos, en el caso de un mensaje que se corrompió al ser
enviado, una manera de ocultar el fallo es haciendo la solicitud de reenvío
del mensaje, y de esta manera el usuario nunca notará que hubo un
problema.Otroejemplolodan las técnicasde redundanciaqueexplicaremos
más adelante, pero que básicamente consiste en tener disponibles varios
elementos que puedan dar el mismo servicio y que en caso de que uno falle,
otro este en la disponibilidad de realizar el trabajo en su lugar, esto puede
darse cuando fallan componentes de un servidor (discos duros, tarjetas de
Sistemas Distribuidos 1
7
red, etc.), o incluso cuando fallan las conexiones a la red o los sistemas de
bases de datos.
Tolerancia a Fallos: es importante saber cuando un sistema puede llegar a
tener ciertos problemas sin que estos afecten de manera grave al usuario de
los servicios proporcionados, para así, ignorar la ocurrencia de dichos fallos
cuando la aplicación lo soporte, o bien, hacer saber al cliente que hay un
problema en lugar de gastar tiempo y recursos innecesarios para corregirlo
cuando probablemente el problema no se pueda arreglar rápido y el cliente
termine por abortar el proceso; Pretender arreglar de manera inmediata
todos los problemas que puedan surgir en un sistema puede resultar incluso
dañino para el mismo sistema, puesto que hay problemas que mientras son
arreglados pueden afectar el rendimiento de otros componentes del sistema
que sí están trabajando.
Recuperación Frente a Fallos: Una vez que fue detectado un fallo y que se
ha decidido arreglarlo, hay que encontrar la mejor manera de hacerlo, y
además, de recuperar el estado del sistema antes de que ocurriera el fallo;
esto requiere del software adecuado para poder reconstruiro bien retractar
los cambiosquenofueroncompletadosalmomentoenquefueinterrumpido
el sistema, un ejemplo de esto lo podemos ver en los sistemas manejadores
de bases de datos, que se sirven de una bitácora de las transacciones que se
realizan y de acuerdo a esta bitácora se decide reconstruir o retractar las
transacciones hechas sobre la base de datos antes de que se interrumpiera el
funcionamiento de la misma.
Redundancia: un sistema distribuido puede lograr ser tolerante a fallos
gracias a la utilización de componentes redundantes dentro del sistema. La
redundancia se logra con la replicación de dichos componentes y con la
habilidad del sistema de recurrir a los componentes de respaldo en caso de
que el componente de uso primario falle, todo esto por supuesto, sin que el
usuario se percate de lo que esta sucediendo. La redundancia se puede dar
en muchas partes del sistema: componentes internos de los servidores,
servidores de aplicaciones, de Web, de archivos, de correo o de bases de
datos, sistemas de almacenamiento, conexiones a la red de comunicación,
etc. Es muy importante tomar en cuenta que todos los componentes que
estén replicados en el sistema deben mantenerse actualizados para evitar
problemasdeconsistencia,yademás,la actualizacióndelainformaciónentre
dichos componentes no debe de tener un efecto significativo para las
necesidades de transmisión de datos del sistema.
Sistemas Distribuidos 18
Las técnicas antes mencionadas no son las únicas, pero si las más utilizadas,
estas técnicas deben de proporcionar las herramientas necesarias para
aumentar el grado de disponibilidad de cualquier sistema distribuido, ya que
al saber como tratar un fallo del sistema, también es posible encontrar la
manera de reconfigurar el sistema para que los servicios que este
proporciona no sean interrumpidos, o que en el peor de los casos sólo sean
afectados los servicios proporcionados por los componentes afectados.
f) Concurrencia:
El control de concurrencia trata con los problemas de aislamiento y
consistencia del procesamiento de transacciones. El control de concurrencia
de un sistema distribuido asegura que la consistencia de los datos que se
almacenan y que se procesan en el sistema se mantienen en un ambiente
distribuido multiusuario. Si las transacciones son internamente consistentes,
la manera más simple de lograr este objetivo es ejecutar cada transacción
sola, una después de otra. Sin embargo, esto puede afectar mucho el
desempeño de un sistema distribuido dado que el nivel de concurrencia se
reduce al mínimo. El nivel de concurrencia, es decir, el número de
transacciones simultáneas activas, es probablemente el parámetro más
importante en sistemas distribuidos. Por lo tanto, los mecanismos de control
de concurrencia buscan encontrar un balance entre el mantenimiento de la
consistencia de los datos y el mantenimiento de un alto nivel de
concurrencia.
Si no se hace un adecuado control de concurrencia, se pueden presentar dos
anomalías. En primer lugar, se pueden perder actualizaciones provocando
que los efectos de algunas transacciones no se reflejen en los datos
almacenados. En segundo término, pueden presentarse recuperaciones de
información inconsistentes. Las técnicas que se utilizan para asegurar un
control de concurrencia de un sistema distribuido, como hilos, semáforos,
candados, etc., se discutirán más adelante, en la parte de análisis de la
arquitectura de clienteservidor.
g) Transparencia:
Se dice que un sistema distribuido es transparente, cuandoeste es capaz de
presentarse ante los usuarios y las aplicaciones como si fuese un sistema que
corre en una sola computadora, y no como un sistema cuyos procesos y
recursos están distribuidos físicamente en varias computadoras.
Tipos de Transparencia:
Según el Manual de Referencia ANSA y el Modelo de Referencia para el
Procesamiento Distribuido Abierto de la Organización Internacional de
Estándares (ISO 1995), el concepto de transparencia de puede aplicar a 8
aspectos diferentes de un sistema distribuido:
Sistemas Distribuidos 19
o Transparencia de Acceso: oculta las diferencias entre la
representación de los datos y la manera en que los recursos son
accedidos.
o Transparencia de Ubicación: oculta la localización de los recursos y
permite el acceso a los mismos sin la necesidad de conocer su
localización.
o Transparencia de Migración: oculta que un recurso o un cliente del
sistema sea reubicado, lo que permite hacer dichas reubicaciones sin
afectar la operación de los usuarios y los servicios.
o Transparencia de Recolocación: oculta que un recurso o un cliente del
sistema pueda moverse a una ubicación diferente mientras están en
uso.
o Transparencia de Replicación: oculta la existencia de múltiples
ejemplares del mismo recurso.
o TransparenciadeConcurrencia:ocultaqueunrecursoseacompartido
por varios usuarios sin interferir entre ellos mismos.
o Transparencia Frente a Fallos: oculta el fallo y recuperación de un
recurso dentro del sistema, dejando que los usuarios terminen sus
tareas a pesar de los fallos de hardware o software que pudieran
presentarse.
o Transparencia de Persistencia: oculta si un recurso (de software) esta
almacenado en memoria o en disco.
Desde el punto de vista de los usuarios, la transparencia se logra cuando:
o Sus pedidos se satisfacen con ejecuciones en paralelo en distintas
máquinas.
o Se utilizan una variedad de servidores de archivos.
o El usuario no necesita saberlo ni notarlo.
La transparencia desde el puntode vista de los programas significa diseñar la
interfaz de llamadas al sistema de modo que no sea visible la existencia de
varios procesadores.
No es transparente un sistema donde el acceso a los archivos remotos se
realice mediante:
El establecimiento explícito de una conexión en la red con un servidor
remoto. El envío posterior de mensajes, donde el acceso a los servicios
remotos será distinto al acceso a los servicios locales.
Con todo esto en mente es posible diseñar un sistema que cuente con las
características necesarias para lograr la transparencia en tantos aspectos
como sea posible. Los dos más importantes son la transparencia de acceso y
la transparencia de ubicación, la primera se relaciona con la forma en que
representamos los datos en un sistema distribuido, es importante presentar
Sistemas Distribuidos 20
al usuario o a los programadores el acceso indistinto a recursos locales o
remotos, sin que este se de cuenta de la ubicación de los mismos, lo que al
mismo tiempo nos conduce a tener transparencia de ubicación dentro del
sistema.
Como no se sabe donde están localizados los recursos, tampoco se debe de
saber si estos se mueven a una nueva ubicación, se este o no utilizando el
sistema, esto es lo que se conoce como transparencia de Migración y
Recolocación respectivamente.
Ejemplos de transparencia de acceso, ubicación y migración es el sistema de
nombre de dominio utilizado por los usuarios de Internet, estos utilizan un
nombre de dominio como “dominio.com” para acceder este sitio, sin
importar en donde este localizado el sitio de Internet, el usuario podrá
acceder al servidor en el que se este hospedando la página, y si se decide
mover este sitio a otro servidor, basta con redireccionaral cliente al servidor
adecuado, sin que el cliente lo note. Porsu lado, si el cliente esta accediendo
al sitio desde una conexión inalámbrica dentro de su lugar de trabajo y esta
enmovimiento,esposibleseguirproporcionandoserviciossininterrupciones
al cliente siempre y cuando el sistema sea transparente a la recolocación y
permita que el cliente siga conectado a pesar de cambiar su ubicación física.
Por otro lado, la replicación juega un papel muy importante dentro de un
sistema distribuido, en el caso de los nombre de domino, los servidores DNS
trabajan en un sistema de replicación distribuida organizado
jerárquicamente que hace posible el acceso simultáneo a millones de
usuarios que requieren de la información que contiene esta base de datos,
sin embargo, la transparencia de la replicación en el sistema consiste en
esconder que existen varias copias de un mismo recurso, y por lo general
implica que dentro del mismo sistema se cuenta con transparencia de
ubicación, puesto que de otra manera sería imposible acceder a las copias de
los recursos con que se cuenta.
La idea de un sistema distribuido es poder proporcionar a sus usuarios un
servicio simultáneo a un mismo recurso; es entonces muy común que varios
usuarios intenten hacer uso del mismo recurso al mismo tiempo y que traten
de competir por el uso de dicho recurso; en estos casos la transparencia de
concurrencia nos ayuda a ocultar al usuario que además de él, hay otros
usando o intentando usar el mismo recurso. El reto más interesante de esta
parte del diseño de un sistema distribuido es que también se tiene que
considerar la consistencia de los datos que se almacenarán en el sistema, por
lo que habrá que tomar decisiones en cuanto a las técnicas de candados y de
uso de semáforos a utilizarse para lograr tener un sistema concurrente y a su
vez consistente.
La transparencia frente a fallos consiste en esconder cualquier falla que
ocurra en el sistema para que el usuario pueda hacer uso del mismo a pesar
Sistemas Distribuidos 21
de que alguno de sus componentes no este trabajando como es debido, uno
de los retos más desafiantes de esta tarea es saber distinguir entre recursos
que están fallando y recursos que simplemente están siendo accedidos por
muchos usuarios y cuya respuesta puede alentarse. Es importante tener un
buen esquema de replicación y de balanceo de cargas para evitar estas
situaciones, pero al ser prácticamente inevitables es necesario considerar
que hacer cuando el sistema esta en una situación como la antes
mencionada, y sobre todo determinar que tipo de respuesta enviar al cliente
para que este no se de cuenta de las fallas del sistema.
Grado de Transparencia:
A pesar de que la transparencia es una característica generalmente deseable
para cualquier sistema distribuido, hay situaciones en las que el pretender
enmascarar todos los aspectos relacionados con la distribución de los
componentes del sistema puede no ser lo más óptimo; en algunas ocasiones
es mejor hacer del conocimiento del usuario que el sistema esta compuesto
por varios elementos y que por más óptima que sea la transmisión de
mensajes o ladistribuciónyreplicaciónde componentes,habráciertotiempo
de respuesta mínimo entre cada transacción que es imposible evitar.
Hay también una relación directa entre el nivel de transparencia y el
rendimiento de un sistema distribuido, por lo que lo ideal es encontrar un
bienequilibrioentreambosfactores.Porejemplo,si pretendemosgarantizar
la transparencia de replicación en un sistema, es necesario que el usuario
sepa que para garantizar la consistencia de la información es necesario
actualizar todos los componentes replicados cuando se hace un cambio, por
lo que el acceso al sistema puede verse interrumpido por algunos segundos
mientras esta operación se lleva a cabo.
Es muy importante considerar la transparencia como uno de los principales
objetivos del diseño e implementación de un sistema distribuido, sin
embargo, es importante tener en consideración otros factores que pueden
ser afectados por la transparencia, principalmente el desempeño general del
sistema.
1.2. Ventajas y Factores de Distribución:
En general, los sistemas distribuidos exhiben algunas ventajas sobre los
sistemas centralizados que se describen enseguida.
a) Factores Estratégicos:
Hoy en día, los clientes, proveedores y compañías se encuentran
generalmente en diferentes localidades alejados los unos de los otros.
Debido a que todos estos utilizan computadoras, las redes de información
Sistemas Distribuidos 22
que los unen y que les permiten interactuar pueden ofrecer a las empresas
mayor competitividad.
b) Costos de Equipo:
El cociente precio/desempeño de la suma del poder de los procesadores
separados,contraelpoderdeunosolocentralizado,es mejorcuandoestán
distribuidos, esto lo podemos calcular con base al costo promedio de MIPs
(Millones de Instrucciones por Segundo), el cual es mucho mayor en
mainframes que en un número fijo de estaciones de trabajo. Sin embargo,
cabe mencionar que los mainframes soportan cientos de dispositivos y
permiten que miles de clientes compartan los mismos recursos
computacionales del mismo, aunque la diferencia en costos es enorme.
c) Conocimiento y control de los usuarios:
La gran mayoría de los usuarios de los servicios computacionales son cada
vez más cultos y competentes porlo que dichos usuarios desean operar sus
propios sistemas, a su manera, por lo que no están contentos con los
sistemas centralizados que llevan el control sobre los sistemas que son
desarrollados, cuándo, cómo y por quiénes son operados. La computación
distribuida ofrece a los usuarios estar más cerca de los procesos y de los
datos.
d) Costos de Desarrollo:
Cuando se trabaja con un sistema distribuido que cuenta con diferentes
módulosde softwarequepuedenintegrasecomopartedeun solosistema,
los usuarios finales interesados en desarrollar sus propias aplicaciones
pueden hacerlo utilizando sus propias máquinas, lo que trae como
consecuencia la reducción del costo y tiempo de desarrollo de una nueva
aplicación.
e) Interfaces de Usuarios:
La mayoría de las estaciones de trabajo que se utilizan hoy en día soportan
el uso de interfaces gráficas sofisticadas con dispositivos de señalamiento
y sistemas de audio y video; esta tecnología resulta ser muy atractiva
especialmente para usuarios con diferentes estilos de aprendizaje que por
lo general se decepcionan por los tradicionales repotes o interfaces
presentadas en formato de texto o con gráficos de poca calidad.
Sistemas Distribuidos 23
f) Flexibilidad y Facilidad de Configuración:
Los sistemas distribuidos, y en general la computación descentralizada,
ofrece muchas opciones para mejorar el desempeño y la fiabilidad de un
sistema mediante el uso de procesos y datos redundantes.
g) Explotación del Hardware:
Las estaciones de trabajo y computadoras personales permiten el
desarrollo de software especializado que hace uso de las características
específicas del hardware de la estación de trabajo, cada una de estas
estaciones puede ser utilizada como un servidor especializado (por
ejemplo, de correos, de Web, de archivos, de bases de datos, etc.) y estos
servidores con los que satisfacen las peticiones de clientes que desean
hacer uso de los servicios con los que cuenta dicho servidor. A esta
configuración se le conoce comúnmente como configuración “cliente-
servidor” y se explicará a detalle más adelante.
h) Nuevas aplicaciones:
Muchas aplicaciones nuevas de tiempo real requieren ser procesadas y
acceder datos de manera local, lo cual es posible solamente si se utiliza un
sistema distribuido con estaciones de trabajo distribuidos en los lugares
que más se requiera.
i) Crecimiento:
El poder total del sistema puede irse incrementando al añadir pequeños
sistemas, lo cual es mucho más difícil en un sistema centralizado y caro.
Por otro lado, los sistemas distribuidos también exhiben algunas ventajas
sobre sistemas aislados. Estas ventajas son:
Compartir datos: un sistema distribuido permite compartir datos más
fácilmente que los sistemas aislados, que tendrían que duplicarlos en cada
nodo para lograrlo.
Compartirdispositivos:unsistema distribuidopermiteaccederdispositivos
desde cualquier nodo en forma transparente, lo cual es imposible con los
sistemas aislados. El sistema distribuido logra un efectosinergético.
Sistemas Distribuidos 24
Comunicaciones: la comunicación persona a persona es factible en los
sistemas distribuidos, en los sistemas aislados no.
Flexibilidad:La distribucióndelascargasdetrabajoes factibleenel sistema
distribuido, se puede incrementarel poder de cómputo.
1.3. Desventajas y Factores a Considerar:
Así como los sistemas distribuidos exhiben grandes ventajas, también se
pueden identificar algunas desventajas, algunas de ellas tan serias que han
frenado la producción comercial de sistemas distribuidos en la actualidad.
a) Falta de Estándares:
La falta de estándares y herramientas de desarrollo para ambientes
distribuidos pueden crear graves problemas de compatibilidad,
portabilidad e interconectividad en los sistemas distribuidos. Esto se da
cuanto se crean muchas copias incompatibles de la misma aplicación. El
desarrollo y uso de estándares para aplicaciones, computadoras y redes
son desarrolladas en lugares, por personas y en tiempos diferentes, lo cual
resulta muy complicado, y es por eso que es común ver este tipo de
problemas en un sistema distribuido.
b) Complejidad del Diseño:
Los grandes sistemas de computadoras pueden distribuirse en muchas
computadoras, sin embargo, separar el sistema en muchas partes y decidir
en que lugar van a residir dichas partes, no es una tarea trivial. Los
problemas de compartir datos y recursos son tan complejos que los
mecanismos de solución generan mucha sobrecargaal sistema haciéndolo
ineficiente. El verificar, por ejemplo, quiénes tienen acceso a algunos
recursos y quiénes no, el aplicar los mecanismos de protección y registro
de permisosconsumedemasiados recursos.En la actualidad,lassoluciones
para estos problemas son incipientes.
c) Falta de Infraestructura en Soporte y Administración:
Hasta ahora muchos de los problemas de administración y soporte que
demanda un sistema distribuido no han sido solucionados, y las soluciones
Sistemas Distribuidos 25
que existen para algunos otros problemas son limitadas. Algunos ejemplos
de estos problemas son la planeación de sistemas de información de
acuerdo a la cambiante tecnología que hay hoy en día, el manejo de
recursos distribuidos y el diseño de la estructura organizacional para la
computación distribuida.
d) Seguridad e Integridad:
La distribución de datos y de programas en múltiples localidades pueden
crear muchos problemas de seguridad e integridad que no con fáciles de
solucionar y que por lo general requieren también de un proceso paralelo
que ayude a solucionar dichos problemas, por lo que la carga del sistema
aumenta y el rendimiento en general puede verse afectado.
e) Opciones:
La disponibilidad de muchas opciones y decisiones puede ser tanto buena,
como mala. En ocasiones tener muchas opciones nos quita tiempo, puesto
que tenemos que analizar, entender y probar todas las que están
disponibles antes de llegar a tomar una decisión cobre cual es la mejor. Por
el lado contrario, el tenermuchas opciones nos permite diseñar un sistema
que este conformado.
2. Arquitectura Cliente Servidor
1.1. Fundamentos de Arquitectura Cliente Servidor
Definiciones Básicas
Para entender el concepto de la arquitectura de cliente servidor, antes es
necesario conocer algunas definiciones. Entre las principales definiciones se
tiene:
a) Desde un punto de vista conceptual:
Es un modelo para construir sistemas de información, que se sustenta en la
idea de repartir el tratamiento de la información y los datos por todo el
sistema informático, permitiendomejorar el rendimiento del sistema global
de Información
b) En términos de arquitectura:
Sistemas Distribuidos 26
Los distintos aspectos que caracterizan a una aplicación (proceso,
almacenamiento, control y operaciones de entrada y salida de datos) en el
sentido más amplio, están situados en más de un computador, los cuales se
encuentran interconectados mediante unared de comunicaciones.
c) IBM define al modelo Cliente/Servidor
Es la tecnología que proporcionaal usuario final el acceso transparente a las
aplicaciones, datos, servicios de cómputo o cualquier otrorecurso del grupo
de trabajo y/o, a través de la organización, en múltiples plataformas. El
modelo soporta un medioambiente distribuido en el cual los requerimientos
de servicio hechos por estaciones de trabajo inteligentes o "clientes'',
resultan en un trabajo realizado por otros computadores llamados
servidores.
Para entender mejor las definiciones antes mencionadas, analizaremos ahora
algunos de los conceptos mencionados en dichas definiciones:
Un Cliente es el que inicia un requerimiento de servicio. El requerimiento inicial
puede convertirse en múltiples requerimientos de trabajo a través de redes LAN
o WAN. La ubicación de los datos o de las aplicaciones es totalmente
transparente para el cliente.
Un Servidor es cualquier recurso de cómputo dedicado a responder a los
requerimientosdelcliente.Losservidorespueden estarconectadosalosclientes
a través de redes LANs o WANs, para proveer de múltiples servicios a los clientes
tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes,
etc. Es importante mencionar que un servidor no es necesariamente un
dispositivofísico(unacomputadora)sinoquehayqueentenderalservidorcomo
un proceso que se encarga de atender las peticiones de un cliente.
Con estos elementos podemos ya darnos una idea de lo que es el modelo cliente
servidor, sin embargo, es necesario analizar más a fondo las características de la
arquitectura si queremos llegar a entender por completo el funcionamiento de
la misma.
Elementos de la Arquitectura Cliente/Servidor
Una arquitectura es un entramado de componentes funcionales que
aprovechandodiferentes estándares, convenciones, reglas y procesos, permite
integrar una amplia gama de productos y servicios informáticos, de manera que
pueden ser utilizados eficazmente dentro de la organización.
Debemos señalar que para seleccionar el modelo de una arquitectura, hay que
partir del contexto tecnológico y organizativo del momento y, que la
arquitectura Cliente/Servidorrequiere una determinada especialización de cada
uno de los diferentes componentes que la integran.
Sistemas Distribuidos 27
En esta aproximación, y con el objetivo de definir y delimitar el modelo de
referencia de una arquitectura Cliente/Servidor, debemos identificar los
componentes que permitan articular dicha arquitectura, considerando que toda
aplicación de un sistema de información está caracterizada por tres
componentes básicos:
o Presentación/Captación de Información
o Procesos
o Almacenamiento de la Información
Y se integran en una arquitectura Cliente/Servidor en base a los elementos que
caracterizan dicha arquitectura, es decir:
o Puestos de Trabajo o Comunicaciones
o Servidores
De estos elementos debemos destacar:
El Puesto de Trabajo o Cliente “Una Estación de trabajo o microcomputador(PC:
Computador Personal) conectado a una red, que le permite acceder y gestionar
una serie de recursos”, el cual se perfila como un puesto de trabajo universal.
Nos referimos a un microcomputador conectadoal sistema de información y en
el que se realiza una parte mayoritaria de los procesos.
Se trata de un fenómeno en el sector informático. Aquellos responsables
informáticos que se oponen a la utilización de los terminales no programables,
acaban siendo marginados por la presión de los usuarios. Debemos destacarque
el puesto de trabajo basado en un microcomputador conectado a una red,
favorecelaflexibilidadyel dinamismoenlas organizaciones.Entreotrasrazones,
porque permite modificar la ubicación de los puestos de trabajo, dadas las
ventajas de la red.
Los Servidores o Back-End. “Una máquina que suministra una serie de servicios
como Bases de Datos, Archivos, Comunicaciones,...)”. Los Servidores, según la
especialización y los requerimientos de los servicios que debe suministrar
pueden ser:
o Mainframes o Minicomputadoras
o Especializados (dispositivos de red, imagen,
etc.)
Una característica a considerar es que los diferentes servicios, según el caso,
pueden ser suministrados por un único Servidor o por varios Servidores
especializados.
Las Comunicaciones en sus dos vertientes:
Sistemas Distribuidos 28
Infraestructura de redes: Componentes Hardware y Software que garantizan la
conexión física y la transferencia de datos entre los distintos equipos de la red.
Infraestructura de comunicaciones: Componentes Hardware y Software que
permiten la comunicación y su gestión, entre los clientes y los servidores.
La arquitecturaCliente/Servidoreselresultadodela integracióndedosculturas.
Por un lado, la del Mainframe que aporta capacidad de almacenamiento,
integridad y acceso a la información y, por el otro, la del computadorque aporta
facilidad de uso (cultura de PC), bajo costo, presentación atractiva (aspecto
lúdico) y una amplia oferta en productos y aplicaciones.
Características del modelo Cliente/Servidor
En el modelo Cliente/Servidorpodemos encontrar las siguientes características:
a) El Cliente y el Servidor pueden actuar como una sola entidad y también
pueden actuar como entidades separadas, realizando actividades o tareas
independientes.
b) Las funciones de Cliente y Servidor pueden estar en plataformas separadas,
o en la misma plataforma.
c) Un servidor proporciona servicio a múltiples clientes en forma concurrente.
d) Cada plataforma puede ser escalable independientemente. Los cambios
realizados en las plataformas de los Clientes o de los Servidores, ya sean por
actualización o por reemplazo tecnológico, se realizan de una manera
transparente para el usuario final.
e) La interrelación entre el hardware y el software están basados en una
infraestructura poderosa, de tal forma que el acceso a los recursos de la red
no muestra la complejidad de los diferentes tipos de formatos de datos y de
los protocolos.Unsistemade servidoresrealiza múltiplesfuncionesalmismo
tiempoquepresentaunaimagendeunsólosistema alas estaciones Clientes.
Esto se logra combinando los recursos de cómputo que se encuentran
físicamente separados en un sistema lógico, proporcionandode esta manera
el servicio más efectivo para el usuario final.
También es importante hacer notar que las funciones Cliente/Servidor
pueden ser dinámicas. Ejemplo, un servidor puede convertirse en cliente
cuando realiza la solicitud de servicios a otras plataformas dentro de la red.
Tiene capacidad para permitir integrar los equipos ya existentes en una
Sistemas Distribuidos 29
organización, dentro de una arquitectura informática descentralizada y
heterogénea.
f) Además se constituye como el nexo de unión más adecuado para reconciliar
los sistemas de información basados en mainframes o minicomputadoras,
con aquellos otros sustentados en entornos informáticos pequeños y
estaciones de trabajo.
g) Designa un modelo de construcción de sistemas informáticos de carácter
distribuido.
h) Su representación típica es un centro de trabajo (PC), en donde el usuario
dispone de sus propias aplicaciones de oficina y sus propias bases de datos,
sin dependencia directa del sistema central de información de la
organización,altiempoquepuedeaccederalos recursosde este host central
y otros sistemas de la organización ponen a su servicio.
En consecuencia, parte del control de las aplicaciones se transfieren del
computador central (servidor) a los PCs o estaciones de trabajo (clientes),
adquiriendo estas plataformas, entonces, un papel protagonista en conjunto del
sistema de información.
En conclusión, Cliente/Servidor puede incluir múltiples plataformas, bases de
datos, redes y sistemas operativos. Estos pueden ser de distintos proveedores,
en arquitecturas propietarias y no propietarias y funcionando todos al mismo
tiempo. Por lo tanto, su implantación involucra diferentes tipos de estándares:
APPC, TCP/IP, OSI, NFS, DRDA corriendo sobre DOS, OS/2, Windows o PC UNIX,
en Token-Ring, Ethernet, FDDI o medio coaxial, sólo por mencionar algunas de
las posibilidades. Dependiendo de estas características y de su combinación, es
el grado de complejidad de una solución C/S.
Ventajas y Desventajas del modelo Cliente/Servidor
El esquema Cliente/Servidor posee las siguientes ventajas:
a) Uno de los aspectos que más ha promovido el uso de sistemas
Cliente/Servidor, es la existencia de plataformas de hardware cada vez más
baratas. Esta constituye a su vez una de las más palpables ventajas de este
esquema, la posibilidaddeutilizarmáquinasconsiderablementemásbaratas
que las requeridas por una solución centralizada, basada en sistemas
grandes.
Además, se pueden utilizar componentes, tanto de hardware como de
software, de varios fabricantes, lo cual contribuye considerablemente a la
reducción de costos y favorece la flexibilidad en la implantación y
actualización de soluciones.
Sistemas Distribuidos 30
b) El esquema Cliente/Servidor facilita la integración entre sistemas diferentes
y comparte información permitiendo, por ejemplo que las máquinas ya
existentes puedan ser utilizadas pero con interfaces más amigables al
usuario. De esta manera, podemos integrar PCs con sistemas medianos y
grandes, sin necesidad de que todos tengan que utilizar el mismo sistema
operacional.
c) Al favorecer el uso de interfaces gráficas interactivas, los sistemas
construidos bajo este esquema tienen mayorinteracción más intuitiva con el
usuario. El uso de interfaces gráficas para el usuario, el esquema
Cliente/Servidorpresentalaventaja,conrespectoaunocentralizado,deque
no es siempre necesario transmitir información gráfica por la red pues esta
puede residir en el cliente, lo cual permite aprovechar mejor el ancho de
banda de la red.
d) Una ventaja adicional del uso del esquema Cliente/Servidor es que es más
rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden
emplear las herramientas existentes (por ejemplo los servidores de SQL o las
herramientas de más bajo nivel como los sockets o el RPC).
e) La estructura inherentemente modular facilita además la integración de
nuevas tecnologías y el crecimiento de la infraestructura computacional,
favoreciendo así la escalabilidad de las soluciones.
f) El esquema Cliente/Servidor contribuye además, a proporcionar, a los
diferentes departamentos de una organización, soluciones locales, pero
permitiendo la integración de la información relevante a nivel global.
El esquema Cliente/Servidor tiene algunos inconvenientes que se mencionan a
continuación:
a) Tiene escasas herramientas para la administración y ajuste del desempeño
de los sistemas.
b) En el desarrollo de aplicaciones Cliente/Servidor se deben considerar los
aspectos, que se mencionan a continuación:
o Los clientes y los servidores deberán utilizar el mismo mecanismo (por ejemplo
sockets o RPC), lo cual implica que se deben tener mecanismos generales
que existan en diferentes plataformas.
o Además, hay que tener estrategias pare el manejo de errores y para
mantener la consistencia de los datos. La seguridad de un esquema
Cliente/Servidor es muy importante. Por ejemplo, se deben hacer
verificaciones en el cliente y en el servidor. También se puede recurrir a
otras técnicas como el encripción.
Sistemas Distribuidos 31
o El desempeño. Problemas de este estilo pueden presentarse por
congestión en la red, dificultad de tráficode datos, etc.
o Un aspecto directamente relacionado con lo anterior es el de cómo
distribuir los datos en la red. En el caso de una organización, por
ejemplo, éste puede ser hecho por departamentos, geográficamente, o
de otras maneras. Hay que tener en cuenta que en algunos casos, por
razones de confiabilidad o eficiencia, se pueden tener datos replicados,
y que puede haber actualizaciones simultáneas.
o A otro nivel, una de las decisiones que deben tomar las organizaciones es la de si
comprar o desarrollar los diferentes componentes.
Servicios basados en Cliente/Servidor
IBM ha orientado sus esfuerzos de desarrollo de productos ha satisfacer los
siguientes servicios:
a) Servicios de Datos e Impresión: Servicios que permiten compartir archivos,
bases de datos, impresoras y graficadores (plotters). Administración de las
colas de impresión en diferentes dispositivos.
b) ServiciosdeComunicaciones:Aseguranquecadacomponentefísicodelared
sea capaz de comunicarse exitosamente con otros componentes, tales como
LAN a LAN y LAN a WAN. El sistema puede incluir dispositivos de
comunicaciones que manejen diferentes tipos de protocolos para conectar
sistemas heterogéneos.
c) Servicio de Administración: Administración de Sistemas involucra
administración de cambios, de problemas, operaciones, configuración y
rendimiento.
Administración de Cambios: es definida como las actividades involucradas en
la planeación, programación, distribución, instalación y registro de hardware
y software en una red distribuida.
Administración de Problemas: involucra la determinación de los mismos, la
identificación de su origen en una red y su solución.
Administración de Operaciones: es definida como la administración del uso
de los sistemas y de los recursos para soportar la carga de trabajo de la
organización, la cual incluye operaciones automatizadas y remotas.
Administración de Configuración: es el manejo de las relaciones lógicas y
físicas entre los recursos de la red.
Sistemas Distribuidos 32
Administración del Rendimiento: es un conjunto de actividades tales como
la recopilación de datos de desempeño, afinamiento, distribución de carga
de trabajo y el planeamiento de la capacidad para las redes distribuidas.
Administración de Sistemas: también incluye servicios de respaldo,
recuperación de datos, seguridad de recursos de cómputo y distribución y
mantenimiento de software.
d) Servicios de Aplicación: Si el recurso compartido es una parte de una
aplicación (una función de la aplicación), estamos hablando de servicios de
aplicación. Cada uno de los procesadores participantes en un ambiente
Cliente/Servidor puede mantener parte del código de la aplicación, el cual
debeser compartidoportodosellos(interoperabilidad).Estosignificaquelas
partes de una aplicación pueden ser distribuidas en varios procesadores,
locales o remotos.
El diseño de las funciones de la aplicación no debe estar ligado a un computador,
lo que permite transportar la aplicación de un procesador a otro, sin
modificaciones (portabilidad).
Una ventaja derivada de esto, es que la aplicación puede estar óptimamente
ubicada dentro de una red en base a las necesidades: de recursos de cómputo y
de la organización.
Programación porcapas
La programación por capas es un estilo de programación en el que el objetivo
primordial es la separación de la lógica de negocios de la lógica de diseño; un
ejemplo básico de esto consiste en separar la capa de datos de la capa de
presentación al usuario.
Sistemas Distribuidos 33
La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en
varios niveles y, en caso de que sobrevenga algún cambio, sólo se ataca al nivel
requerido sin tener que revisar entre códigomezclado. Un buen ejemplode este
método de programación sería el modelo de interconexión de sistemas abiertos.
Además, permite distribuir el trabajo de creación de una aplicación por niveles;
de este modo, cada grupo de trabajo está totalmente abstraído del resto de
niveles, de forma que basta con conocer la API que existe entre niveles.
En el diseño de sistemas informáticos actual se suele usar las arquitecturas
multinivel o Programación por capas. En dichas arquitecturas a cada nivel se le
confía una misión simple, lo que permite el diseño de arquitecturas escalables
(que pueden ampliarse con facilidad en caso de que las necesidades aumenten).
El diseño más utilizado actualmente es el diseño en tres niveles (o en tres capas).
Capas y niveles
a) Capa de presentación: es la que ve el usuario (también se la denomina "capa
de usuario"), presenta el sistema al usuario, le comunica la información y
captura la información del usuario en un mínimo de proceso (realiza un
filtrado previo para comprobar que no hay errores de formato). Esta capa se
comunica únicamente con la capa de negocio. También es conocida como
interfaz gráfica y debe tener la característica de ser "amigable" (entendible y
fácil de usar) para el usuario.
b) Capa de negocio: es donde residen los programas que se ejecutan, se reciben
las peticiones del usuario y se envían las respuestas tras el proceso. Se
denomina capa de negocio (e incluso de lógica del negocio) porque es aquí
donde se establecen todas las reglas que deben cumplirse. Esta capa se
comunica con la capa de presentación, para recibir las solicitudes y presentar
los resultados,yconla capadedatos,para solicitaralgestordebase de datos
Sistemas Distribuidos 34
para almacenar o recuperar datos de él. También se consideran aquí los
programas de aplicación.
c) Capa de datos: es donde residen los datos y es la encargada de acceder a los
mismos. Está formada por unoo más gestores de bases de datos que realizan
todo el almacenamiento de datos, reciben solicitudes de almacenamiento o
recuperación de información desde la capa de negocio.
Todas estas capas pueden residir en un único ordenador, si bien lo más usual es
que haya una multitud de ordenadores en donde reside la capa de presentación
(son los clientes de la arquitectura cliente/servidor). Las capas de negocio y de
datos pueden residir en el mismo ordenador, y si el crecimiento de las
necesidades lo aconseja se pueden separar en dos o más ordenadores. Así, si el
tamaño o complejidad de la base de datos aumenta, se puede separar en varios
ordenadores los cuales recibirán las peticiones del ordenador en que resida la
capa de negocio.
Si, por el contrario, fuese la complejidad en la capa de negocio lo que obligase a
la separación, esta capa de negocio podría residir en unoo más ordenadores que
realizarían solicitudes a una única base de datos. En sistemas muy complejos se
llega a tener una serie de ordenadores sobre los cuales corre la capa de negocio,
y otra serie de ordenadores sobre los cuales corre la base de datos.
Enunaarquitecturadetresniveles,los términos"capas"y "niveles" nosignifican
lo mismo ni son similares.
El término "capa" hace referencia a la forma como una solución es segmentada
desde el punto de vista lógico:
Presentación/ Lógica de Negocio/ Datos.
En cambio, el término "nivel" corresponde a la forma en que las capas lógicas se
encuentran distribuidas de forma física. Por ejemplo:
o Una solución de tres capas (presentación, lógica del negocio, datos) que
residen en un solo ordenador (Presentación+lógica+datos). Se dice que
la arquitectura de la solución es de tres capas y un nivel.
o Una solución de tres capas (presentación, lógica del negocio, datos) que residen en
dos ordenadores (presentación+lógica, lógica+datos). Se dice que la
arquitectura de la solución es de tres capas y dos niveles.

Más contenido relacionado

La actualidad más candente

Redes de ordenadores
Redes de ordenadoresRedes de ordenadores
Redes de ordenadoresCarlos Segura
 
Organizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolos
Organizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolosOrganizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolos
Organizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolosJosé Miguel Bello Valera
 
Dispositivos de red
Dispositivos de redDispositivos de red
Dispositivos de redChacho25
 
Conmutación, Redes WLAN, PAN, WAN Windows Server 2008 con AD
Conmutación, Redes WLAN, PAN, WAN Windows Server 2008 con ADConmutación, Redes WLAN, PAN, WAN Windows Server 2008 con AD
Conmutación, Redes WLAN, PAN, WAN Windows Server 2008 con ADÓscar Humberto Díaz Jurado
 
Capa red funcionalidad, protocolos, ip, tipos de red, submascara, mascara
Capa red   funcionalidad, protocolos, ip, tipos de red, submascara, mascaraCapa red   funcionalidad, protocolos, ip, tipos de red, submascara, mascara
Capa red funcionalidad, protocolos, ip, tipos de red, submascara, mascaraGerson Purisaca Martinez
 
14 dispositivos de usuario y red
14 dispositivos de usuario y red14 dispositivos de usuario y red
14 dispositivos de usuario y redNicolas Barone
 
Capa 2 modelo osi enlace de datos
Capa 2 modelo osi enlace de datosCapa 2 modelo osi enlace de datos
Capa 2 modelo osi enlace de datosdianamarcela0611
 
dispositivo de networking
dispositivo de networkingdispositivo de networking
dispositivo de networkingDaviid Orozco
 
Conceptos básicos de redes de computadores
Conceptos básicos de redes de computadores Conceptos básicos de redes de computadores
Conceptos básicos de redes de computadores Daniel Espinosa
 
Modelo osi
Modelo osiModelo osi
Modelo osii1611161
 
Dispositivos de Red y las Capas de Operacion
Dispositivos de Red y las Capas de OperacionDispositivos de Red y las Capas de Operacion
Dispositivos de Red y las Capas de Operacionrems251970
 
1.2.4.5 packet tracer network representation - ilm
1.2.4.5 packet tracer   network representation - ilm1.2.4.5 packet tracer   network representation - ilm
1.2.4.5 packet tracer network representation - ilmmariosaavedra27
 
accesorios para una red fisica ( almbrica)
accesorios para una red  fisica ( almbrica)accesorios para una red  fisica ( almbrica)
accesorios para una red fisica ( almbrica)jesus
 
Configuración de red LAN
Configuración de red LANConfiguración de red LAN
Configuración de red LANLuis Castillo
 
Dispositivos de red
Dispositivos de redDispositivos de red
Dispositivos de redmjyadira
 
Resumen del capitulo uno del curso ccna1
Resumen del capitulo uno del curso ccna1Resumen del capitulo uno del curso ccna1
Resumen del capitulo uno del curso ccna1Cristina Peñafiel
 

La actualidad más candente (20)

Redes de ordenadores
Redes de ordenadoresRedes de ordenadores
Redes de ordenadores
 
Organizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolos
Organizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolosOrganizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolos
Organizaciones de Estandarizacion, Modelo en Capas, Puertos Y protocolos
 
clase1
clase1clase1
clase1
 
Dispositivos de red
Dispositivos de redDispositivos de red
Dispositivos de red
 
Conmutación, Redes WLAN, PAN, WAN Windows Server 2008 con AD
Conmutación, Redes WLAN, PAN, WAN Windows Server 2008 con ADConmutación, Redes WLAN, PAN, WAN Windows Server 2008 con AD
Conmutación, Redes WLAN, PAN, WAN Windows Server 2008 con AD
 
Capa red funcionalidad, protocolos, ip, tipos de red, submascara, mascara
Capa red   funcionalidad, protocolos, ip, tipos de red, submascara, mascaraCapa red   funcionalidad, protocolos, ip, tipos de red, submascara, mascara
Capa red funcionalidad, protocolos, ip, tipos de red, submascara, mascara
 
Accesorios para armar una red
Accesorios para armar una redAccesorios para armar una red
Accesorios para armar una red
 
14 dispositivos de usuario y red
14 dispositivos de usuario y red14 dispositivos de usuario y red
14 dispositivos de usuario y red
 
Capa 2 modelo osi enlace de datos
Capa 2 modelo osi enlace de datosCapa 2 modelo osi enlace de datos
Capa 2 modelo osi enlace de datos
 
dispositivo de networking
dispositivo de networkingdispositivo de networking
dispositivo de networking
 
Conceptos básicos de redes de computadores
Conceptos básicos de redes de computadores Conceptos básicos de redes de computadores
Conceptos básicos de redes de computadores
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Capa fisica
Capa fisicaCapa fisica
Capa fisica
 
Dispositivos de Red y las Capas de Operacion
Dispositivos de Red y las Capas de OperacionDispositivos de Red y las Capas de Operacion
Dispositivos de Red y las Capas de Operacion
 
1.2.4.5 packet tracer network representation - ilm
1.2.4.5 packet tracer   network representation - ilm1.2.4.5 packet tracer   network representation - ilm
1.2.4.5 packet tracer network representation - ilm
 
accesorios para una red fisica ( almbrica)
accesorios para una red  fisica ( almbrica)accesorios para una red  fisica ( almbrica)
accesorios para una red fisica ( almbrica)
 
Dispositivos de red
Dispositivos de redDispositivos de red
Dispositivos de red
 
Configuración de red LAN
Configuración de red LANConfiguración de red LAN
Configuración de red LAN
 
Dispositivos de red
Dispositivos de redDispositivos de red
Dispositivos de red
 
Resumen del capitulo uno del curso ccna1
Resumen del capitulo uno del curso ccna1Resumen del capitulo uno del curso ccna1
Resumen del capitulo uno del curso ccna1
 

Similar a Distribuidas1

Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.argentm
 
Sistema operativo distribuidos
Sistema operativo distribuidosSistema operativo distribuidos
Sistema operativo distribuidoschinogallegos
 
Sistema operativo distribuidos
Sistema operativo distribuidosSistema operativo distribuidos
Sistema operativo distribuidoschinogallegos
 
Sistema operativo distribuidos
Sistema operativo distribuidosSistema operativo distribuidos
Sistema operativo distribuidoschinogallegos
 
Sistema operativo distribuidos daniel
Sistema operativo distribuidos danielSistema operativo distribuidos daniel
Sistema operativo distribuidos danielchinogallegos
 
Yamilet gonzalez
Yamilet gonzalezYamilet gonzalez
Yamilet gonzalezyamiigonza
 
Sistemas Operativos Distribuidos - UFT
Sistemas Operativos Distribuidos - UFTSistemas Operativos Distribuidos - UFT
Sistemas Operativos Distribuidos - UFTadrrog
 
Victor milano sistema operativos distribuidos
Victor milano sistema operativos distribuidosVictor milano sistema operativos distribuidos
Victor milano sistema operativos distribuidosVictor Milano
 
Sistema operativo distribuido
Sistema operativo distribuidoSistema operativo distribuido
Sistema operativo distribuidoRamon1 rodriguez1
 
Sistema operativos distribuidos
Sistema operativos distribuidosSistema operativos distribuidos
Sistema operativos distribuidospgr95
 
Sistemas Operativos Distribuidos
Sistemas Operativos DistribuidosSistemas Operativos Distribuidos
Sistemas Operativos DistribuidosVectorinox01
 
Sistemas operativos por estructura
Sistemas operativos por estructuraSistemas operativos por estructura
Sistemas operativos por estructuraProf. Javier Troya
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidosJesus Marcano Perez
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidossergiooney
 
Cuestionario de sistemas operativos(4) (1)
Cuestionario de sistemas operativos(4) (1)Cuestionario de sistemas operativos(4) (1)
Cuestionario de sistemas operativos(4) (1)tatianaarizah
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidosVictor Milano
 

Similar a Distribuidas1 (20)

Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.Sistemas Operativos Distribuidos.
Sistemas Operativos Distribuidos.
 
Sistema operativo distribuidos
Sistema operativo distribuidosSistema operativo distribuidos
Sistema operativo distribuidos
 
Sistema operativo distribuidos
Sistema operativo distribuidosSistema operativo distribuidos
Sistema operativo distribuidos
 
Sistema operativo distribuidos
Sistema operativo distribuidosSistema operativo distribuidos
Sistema operativo distribuidos
 
Sistema operativo distribuidos daniel
Sistema operativo distribuidos danielSistema operativo distribuidos daniel
Sistema operativo distribuidos daniel
 
Yamilet gonzalez
Yamilet gonzalezYamilet gonzalez
Yamilet gonzalez
 
Sistemas Operativos Distribuidos - UFT
Sistemas Operativos Distribuidos - UFTSistemas Operativos Distribuidos - UFT
Sistemas Operativos Distribuidos - UFT
 
Victor milano sistema operativos distribuidos
Victor milano sistema operativos distribuidosVictor milano sistema operativos distribuidos
Victor milano sistema operativos distribuidos
 
Sistema operativo distribuido
Sistema operativo distribuidoSistema operativo distribuido
Sistema operativo distribuido
 
Sistema operativos distribuidos
Sistema operativos distribuidosSistema operativos distribuidos
Sistema operativos distribuidos
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
SISTEMAS OPERATIVOS
SISTEMAS OPERATIVOSSISTEMAS OPERATIVOS
SISTEMAS OPERATIVOS
 
Sistemas Operativos Distribuidos
Sistemas Operativos DistribuidosSistemas Operativos Distribuidos
Sistemas Operativos Distribuidos
 
TiposdeSistemasDistribuidos.pdf
TiposdeSistemasDistribuidos.pdfTiposdeSistemasDistribuidos.pdf
TiposdeSistemasDistribuidos.pdf
 
Sistemas operativos por estructura
Sistemas operativos por estructuraSistemas operativos por estructura
Sistemas operativos por estructura
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 
Cuestionario de sistemas operativos(4) (1)
Cuestionario de sistemas operativos(4) (1)Cuestionario de sistemas operativos(4) (1)
Cuestionario de sistemas operativos(4) (1)
 
Tiposso
TipossoTiposso
Tiposso
 
Sistemas operativos distribuidos
Sistemas operativos distribuidosSistemas operativos distribuidos
Sistemas operativos distribuidos
 

Más de Victor Zapata

10-Operadores+comparación.pdf
10-Operadores+comparación.pdf10-Operadores+comparación.pdf
10-Operadores+comparación.pdfVictor Zapata
 
mongodebdocumentos.pdf
mongodebdocumentos.pdfmongodebdocumentos.pdf
mongodebdocumentos.pdfVictor Zapata
 
011-Tipos+de+datos (1).pdf
011-Tipos+de+datos (1).pdf011-Tipos+de+datos (1).pdf
011-Tipos+de+datos (1).pdfVictor Zapata
 
01-introduccion+json (1).pdf
01-introduccion+json (1).pdf01-introduccion+json (1).pdf
01-introduccion+json (1).pdfVictor Zapata
 
05-Terminos+ (2).pdf
05-Terminos+ (2).pdf05-Terminos+ (2).pdf
05-Terminos+ (2).pdfVictor Zapata
 
03-Versiones (1).pdf
03-Versiones (1).pdf03-Versiones (1).pdf
03-Versiones (1).pdfVictor Zapata
 
01-IntroducciónMongoDB (2).pdf
01-IntroducciónMongoDB (2).pdf01-IntroducciónMongoDB (2).pdf
01-IntroducciónMongoDB (2).pdfVictor Zapata
 
00-Bases+de+dato+noSQL (3).pdf
00-Bases+de+dato+noSQL (3).pdf00-Bases+de+dato+noSQL (3).pdf
00-Bases+de+dato+noSQL (3).pdfVictor Zapata
 
0001-Contenido+del+curso+mongodb (2).pdf
0001-Contenido+del+curso+mongodb (2).pdf0001-Contenido+del+curso+mongodb (2).pdf
0001-Contenido+del+curso+mongodb (2).pdfVictor Zapata
 
00-PRESENTACIÓN+DEL+CURSO (2).pdf
00-PRESENTACIÓN+DEL+CURSO (2).pdf00-PRESENTACIÓN+DEL+CURSO (2).pdf
00-PRESENTACIÓN+DEL+CURSO (2).pdfVictor Zapata
 
pptBC5D.pptm [Autoguardado].pdf
pptBC5D.pptm [Autoguardado].pdfpptBC5D.pptm [Autoguardado].pdf
pptBC5D.pptm [Autoguardado].pdfVictor Zapata
 
Norma.ISO.31000.2018.Espanol.pdf
Norma.ISO.31000.2018.Espanol.pdfNorma.ISO.31000.2018.Espanol.pdf
Norma.ISO.31000.2018.Espanol.pdfVictor Zapata
 
Analisis_de_riesgo_usando_la_metodologia_OWASP.pdf
Analisis_de_riesgo_usando_la_metodologia_OWASP.pdfAnalisis_de_riesgo_usando_la_metodologia_OWASP.pdf
Analisis_de_riesgo_usando_la_metodologia_OWASP.pdfVictor Zapata
 
Cualitativaestudiodecaso
CualitativaestudiodecasoCualitativaestudiodecaso
CualitativaestudiodecasoVictor Zapata
 

Más de Victor Zapata (20)

consultas.pptx
consultas.pptxconsultas.pptx
consultas.pptx
 
10-Operadores+comparación.pdf
10-Operadores+comparación.pdf10-Operadores+comparación.pdf
10-Operadores+comparación.pdf
 
CONSULTADB.pptx
CONSULTADB.pptxCONSULTADB.pptx
CONSULTADB.pptx
 
mongodebdocumentos.pdf
mongodebdocumentos.pdfmongodebdocumentos.pdf
mongodebdocumentos.pdf
 
MONGODBCREAR.pptx
MONGODBCREAR.pptxMONGODBCREAR.pptx
MONGODBCREAR.pptx
 
011-Tipos+de+datos (1).pdf
011-Tipos+de+datos (1).pdf011-Tipos+de+datos (1).pdf
011-Tipos+de+datos (1).pdf
 
01-introduccion+json (1).pdf
01-introduccion+json (1).pdf01-introduccion+json (1).pdf
01-introduccion+json (1).pdf
 
05-Terminos+ (2).pdf
05-Terminos+ (2).pdf05-Terminos+ (2).pdf
05-Terminos+ (2).pdf
 
03-Versiones (1).pdf
03-Versiones (1).pdf03-Versiones (1).pdf
03-Versiones (1).pdf
 
01-IntroducciónMongoDB (2).pdf
01-IntroducciónMongoDB (2).pdf01-IntroducciónMongoDB (2).pdf
01-IntroducciónMongoDB (2).pdf
 
00-Bases+de+dato+noSQL (3).pdf
00-Bases+de+dato+noSQL (3).pdf00-Bases+de+dato+noSQL (3).pdf
00-Bases+de+dato+noSQL (3).pdf
 
0001-Contenido+del+curso+mongodb (2).pdf
0001-Contenido+del+curso+mongodb (2).pdf0001-Contenido+del+curso+mongodb (2).pdf
0001-Contenido+del+curso+mongodb (2).pdf
 
00-PRESENTACIÓN+DEL+CURSO (2).pdf
00-PRESENTACIÓN+DEL+CURSO (2).pdf00-PRESENTACIÓN+DEL+CURSO (2).pdf
00-PRESENTACIÓN+DEL+CURSO (2).pdf
 
pptBC5D.pptm [Autoguardado].pdf
pptBC5D.pptm [Autoguardado].pdfpptBC5D.pptm [Autoguardado].pdf
pptBC5D.pptm [Autoguardado].pdf
 
Norma.ISO.31000.2018.Espanol.pdf
Norma.ISO.31000.2018.Espanol.pdfNorma.ISO.31000.2018.Espanol.pdf
Norma.ISO.31000.2018.Espanol.pdf
 
Analisis_de_riesgo_usando_la_metodologia_OWASP.pdf
Analisis_de_riesgo_usando_la_metodologia_OWASP.pdfAnalisis_de_riesgo_usando_la_metodologia_OWASP.pdf
Analisis_de_riesgo_usando_la_metodologia_OWASP.pdf
 
Gestion
GestionGestion
Gestion
 
Cualitativaestudiodecaso
CualitativaestudiodecasoCualitativaestudiodecaso
Cualitativaestudiodecaso
 
Paradigmas (1)
Paradigmas  (1)Paradigmas  (1)
Paradigmas (1)
 
Deber
DeberDeber
Deber
 

Último

Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosCesarFernandez937857
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptxJunkotantik
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docxAleParedes11
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxPryhaSalam
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 

Último (20)

Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
Informatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos BásicosInformatica Generalidades - Conceptos Básicos
Informatica Generalidades - Conceptos Básicos
 
La Función tecnológica del tutor.pptx
La  Función  tecnológica  del tutor.pptxLa  Función  tecnológica  del tutor.pptx
La Función tecnológica del tutor.pptx
 
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docxGLOSAS  Y PALABRAS ACTO 2 DE ABRIL 2024.docx
GLOSAS Y PALABRAS ACTO 2 DE ABRIL 2024.docx
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptxEXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
EXPANSIÓN ECONÓMICA DE OCCIDENTE LEÓN.pptx
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 

Distribuidas1

  • 2. Sistemas Distribuidos 2 1. Introducción: 1.1. Fundamentos: ¿Qué es un Sistema Distribuido? Antes de definir lo que es un Sistema Distribuido, vamos a definir un término más general: La Computación Distribuida, podemos definirla de muchas maneras, este término se utiliza indiscriminadamente para referirse a cualquier sistema en el que múltiples agentes autónomos, cada uno con capacidades de cómputo individual, se comunican entre sí y afectan mutuamente su comportamiento. Los agentes, usualmente llamados procesadores, procesos o nodos, pueden ser desde computadoras completas hasta autómatas celulares con capacidad de cómputo y memoria muy limitados que se pueden comunicar mediante mensajes. La Computación Distribuida hace referencia a cualquier evento en el cual se maneja un sistema en una red de computadoras y trata de describir las tendencias hacia la funcionalidad distribuida: sistemas distribuidos, procesamiento distribuido, bases de datos distribuidas y cualquier otro término computacional que sea distribuido. Podemos decir entonces, que la Computación Distribuida se refiere a los servicios que provee un Sistema de Computación Distribuido. Una de las primeras caracterizaciones de un Sistema Distribuido fue realizada por Enslow, ya en 1978, que le atribuye las siguientes propiedades: o Está compuesto por varios recursos informáticos de propósito general, tanto físicos como lógicos, que pueden asignarse dinámicamente a tareas concretas. o Estos recursos están distribuidos físicamente, y funcionan gracias a una red de comunicaciones. o Hay un sistema operativo de alto nivel, que unifica e integra el control de los componentes. o El hecho de la distribución es transparente, permitiendo que los servicios puedan ser solicitados especificando simplemente su nombre (no su localización). o El funcionamiento de los recursos físicos y lógicos está caracterizado por una autonomía coordinada. A pesar del tiempo transcurrido, esta definición sigue siendo, en esencia, válida. Así, para Coulouris un sistema distribuido es aquél que está compuesto por varias computadoras autónomas conectadas mediante una red de comunicaciones y equipadas con programas que les permitan coordinar sus actividades y compartir recursos. Bal ofrece una definición muy similar: ``Un
  • 3. Sistemas Distribuidos 3 sistema de computación distribuida está compuesto por varios procesadores autónomos que no comparten memoria principal, pero cooperan mediante el paso de mensajes sobre una red de comunicaciones''. Y según Schroeder, todo sistema distribuido tiene tres características básicas: o Existencia de varias computadoras. En general, cada una con su propio procesador, memoria local, subsistema de entrada/salida y quizás incluso memoria persistente. o Interconexión. Existen vías que permiten la comunicación entre las computadoras, a través de las cuales pueden transmitir información. o Estado compartido. Las computadoras cooperan para mantener algún tipo de estado compartido. El funcionamiento correcto del sistema se describirse como el mantenimiento de una serie de invariantes globales que requiere la coordinación de varias computadoras. Como lo hemos observado, el término de Computación Distribuida se define de varias maneras y lo mismo se aplica al término de Sistema Distribuido, así que en lugar de seguir dando más definiciones de estos términos, nos concentraremos en el análisis de las características más importantes de los Sistemas Distribuidos, de esta manera podremos construiruna definición propia de lo que es un Sistema Distribuido al finalizar este capítulo. Una característicamuyimportanteesquelas diferenciasentrelas computadoras y las maneras en que estas se comunican no son transparentes para el usuario final,esto mismo aplicaparalaorganizacióninternadelsistemadistribuido.Otra característica importante es que los usuarios y las aplicaciones pueden interactuar con un Sistema Distribuido de manera consistente y uniforme, sin importar donde y cuando se lleve a cabo la interacción. Todo Sistema Distribuido bebe también ser relativamente fácil poder expandir, lo cual se logra al tener computadoras independientes, pero al mismo tiempo “esconder” las funciones de dichas computadoras en el sistema. Normalmente un sistema distribuido debe de estar siempre disponible a pesar de que ciertas partes que lo conforman puedan no estar funcionando. Los usuarios y las aplicaciones no deben de notar en ningún momento que estas partes están siendo reemplazadas o reparadas, o que se han agregado nuevas partes al sistema para poder dar servicio a más usuarios o aplicaciones. Características de un Sistema Distribuidos: Cualquier diseñador de sistemas debe tener los conocimientos necesarios para enfrentarse a todas las complicaciones que pueden surgir al momento de considerar los requerimientos para el desarrollo de un sistema distribuido. A continuación explicaremos cada una de las características de los Sistemas Distribuidos, según Coulouris son estas características, los desafíos que presentan los sistemas distribuidos.
  • 4. Sistemas Distribuidos 4 a) Heterogeneidad: Al hablar de heterogeneidad nos referimos a la variedad y diferencia que podemos encontrar en los elementos que componen una red de computadoras sobre la que se ejecuta un sistema distribuido, dicha heterogeneidad no sólo se aplica a las redes y al hardware de las computadoras, sino también a los sistemas operativos, los lenguajes de programación y las implementaciones en las que trabajan los diferentes desarrolladores. Un ejemplo de esto lo podemos ver muy claro en Internet, ya que es una red que esta conformada por muchos tipos de redes (Figura 1) cuyas diferencias se encuentran enmascaradas, puesto que todas las computadoras que se conectan a este utilizan los protocolos de Internet para comunicarse una con otra, así una computadora conectada a una red Ethernet puede comunicarse conotracomputadoraconectadaaunaredTokenRing,bastaconquesehaga una implementación de los protocolos de Internet para cada una de esas redes. Figura 1. Un esquemaclásico de la conexión a Internet Otro ejemplo lo podemos ver en los lenguajes de programación y en las aplicaciones escritas por diferentes programadores; en el caso de los lenguajesde programaciónesimportantetenerencuentalasdiferenciasque puede haber en la representación de los caracteres y estructuras de datos como cadenas de caracteres y registros, las cuales pueden variar y pueden ocasionar conflictos entre programas que necesitan comunicarse entre ellos. De igual manera dos programas que son desarrollados por programadores diferentes tienen que utilizar estándares comunes para la comunicación en red y para la representación de los datos elementales y las estructuras de
  • 5. Sistemas Distribuidos 5 datos en los mensajes, ya que si no se cuenta con dichas similitudes, los programas no podrán comunicarse entre sí aunque se hayan desarrolladoen el mismo lenguaje de programación. Un términoquenopodemosdejardemencionaralhablardeheterogeneidad es el de Middleware (Figura 2); este término se aplica a la capa de software queproveeunaabstracciónde programación,asícomounenmascaramiento de la heterogeneidad subyacente de las redes, hardware, sistemas operativos y lenguajes de programación; además, el Middleware proporciona un modelo computacional uniforme al alcance de programadores de servidores y aplicaciones distribuidas que permite la invocación sobre objetos remotos, notificación de eventos remotos, acceso a bases de datos remotas y procesamiento distribuido de transacciones. Algunos ejemplos de Middleware son CORBA y Java RMI. Figura 2. Un sistema distribuido organizado como Middleware Otro término importante para este apartado es el de código móvil, que se emplea para referirse al código que pude ser enviadode una computadora a otra para que esta última la ejecute, un ejemplo de un código móvil son los applets de java, que son enviados del servidor a la computadora del cliente para que este los ejecute en su explorador de Internet. Al implementar un código de este tipo podemos encontrarnos con el problema de que el conjunto de instrucciones (a nivel máquina) de una computadora puede no ser el apropiadoparaotramáquina,porejemplo,unusuariodeunaPCpuede enviarunarchivoejecutableaunusuariodeLinuxyeste últimonoserá capaz de ejecutar dicho archivo. Para solucionar este problema se han creado lo que se conocen como máquinas virtuales, las cuales proveen un modo de crear código ejecutable sobre cualquier hardware, ya que el compilador de un lenguaje concreto generará un código para una máquina virtual y esta se encargará de “traducir” dicho código al apropiado para un hardware particular, así, un compilador de Java producirá un código para la máquina virtual de Java, y esta última sólo necesitará ser implementada una sola vez para cada máquina en la que se va a ejecutar. b) Extensibilidad y Apertura:
  • 6. Sistemas Distribuidos 6 La extensibilidad y la apertura son dos características de un sistema distribuido que están ampliamente ligadas la una con la otra. Algunos autoresdicenqueunsistemaabiertodebedeser extensibleyotrossostienen queun sistema extensiblepuedeser etiquetadocomounsistemaabierto.De cualquier manera lo que es importante saber y tener en cuenta es que un sistema distribuido debe de contar con ambas características. Un sistema distribuido abierto es un sistema que ofrece servicios desarrollados de acuerdo a reglas estandarizadas que describen la sintaxis y la semántica de dichos servicios. Por ejemplo, en una red de computadoras, estas reglas son las que regulan el formato, contenido y significado de los mensajes que se envían y se reciben a través de dicha red. Estas reglas son formalizadas en protocolos. En el caso de los sistemas distribuidos, los servicios se especifican generalmente a través de interfaces que por lo general son descritas en un Lenguaje de Definición de Interfaz (IDL por sus siglas en ingles), dicho lenguaje especifica los nombres de las funciones que están disponibles así como los parámetros de entrada, los valores de salida y los posibles errores que pueden obtenerse al invocarse dichas funciones. Si la definición de una interfaz se hace de manera adecuada, esta permitirá que dos procesos puedan comunicarse entre sí, siempre y cuando ambos procesos cuenten con la misma interfaz. Esto también permite que cada dos desarrolladores independientes construyan su propia implementación de dichas interfaces, lo cual conlleva al desarrollo de dos sistemas distribuidos desarrollados por separado que operan de la misma manera. Una especificación se considera adecuada cuando es completa y neutral. Completa significa que todo lo necesario para hacer una implementación de la interfaz ha sido especificado y que no será necesario que el propio desarrollador sea quien agregue detalles específicos de la implementación. Neutral significa que las especificaciones no deben tener ninguna tendencia hacia como se debe de hacer la implementación de dicha especificación. La completitud y la neutralidad son muy importantes para la interoperabilidad y la portabilidad, que son características que complementan la apertura de un sistema distribuido. La interoperabilidad, también conocida como compatibilidad, caracteriza el gradoen el que la implementación de sistemas o componentes de diferentes fabricantes pueden coexistir y trabajar juntos, siempre y cuando se utilicen los servicios como este especificado por el estándar común bajo el cual dichos sistemas fueron desarrollados. La portabilidad por su parte caracteriza a que nivel puede ser ejecutada una aplicación desarrollada para un sistema distribuido “A” sobre un sistema distribuido “B” que implementa las mismas interfaces del sistema “A”, pero sin hacerle modificaciones. Uno de los principales objetivos que se persiguen al desarrollar un sistema operativo abierto, es que este sea flexible, lo que implica que dicho sistema puede ser integrado por diferentes componentes (tanto de hardware como
  • 7. Sistemas Distribuidos 7 de software), posiblemente de diferentes proveedores, que nuevos componentes pueden agregarse al sistema y que componentes existentes pueden ser reemplazados sin afectar el funcionamiento de los componentes ya existentes, en otras palabras, un sistema distribuido abierto debe de ser extensible. Para lograr la flexibilidad en un sistema distribuido abiertoes necesario que el sistema este organizado en módulos o componentes relativamente pequeños y fáciles de reemplazar, esto implica que además de definir las especificaciones y la documentación de las interfaces de alto nivel a las que tienen acceso los usuarios y las aplicaciones, también es necesario definir las especificaciones de las interfaces de las partes internas que componen el sistema y describir de que manera interactúan entre sí. c) Seguridad: La gran mayoría de la información que maneja un sistema distribuido tiene unaltovalorparalos usuarios dedichosistema, y es poreso quela seguridad de la información juega un papel clave al momento de desarrollar dicho sistema. La seguridad de la información es todo lo que concierne a asegurar que no ocurrirán cosas malas con los mensajes que envían los clientes para solicitar información a un servidor, y por su puesto, con la información que estos reciben como respuesta a sus peticiones. No basta con asegurar que estos mensajes serán transmitidos de forma oculta, sino que también hay que asegurar que la información sea entregada únicamente a quien debe de ser entregada y que esto se hará siempre de forma correcta y en el momento en que se requiere. La seguridad es relativa a la amenaza que cada sistema afronta, afecta a todos los puntos del sistema y debe de ser fácil de obtener. La seguridad debe ofrecer los siguientes servicios: o Confidencialidad, es decir, el manejo privado de la información: proteger la información de ser accedida por usuarios no autorizados. o Autentificación,ocapacidaddeasegurarlaidentidaddeunusuario. o Integridad, que asegura que la información que empleamos no ha sido manipulada, alterada o corrompida desde el origen. o No repudio, de una operación de emisión y recepción de información por parte de los agentes. o Control de acceso a la información y/orecursos administrados por un sistema. o Disponibilidad de los recursos necesarios de un sistema cuando estos sean requeridos, lo que protege la información contra interferencia con los procedimientos de acceso a los recursos.
  • 8. Sistemas Distribuidos 8 El alto valor de que tiene la información es la razón principal por la que esta se puede ver amenazada de muchas formas, entre las principales podemos encontrar: Interrupción: Destruye la información o la inutiliza. Ataca la disponibilidad. Interceptación: Obtiene acceso a información. Ataca la confidencialidad. Modificación: Modifica la información. Ataca la integridad. Fabricación: Falsifica la información. Ataca la autenticidad. Para defenderse de este tipo de amenazas se han desarrollado diversas técnicas de encriptación, firmas digitales, implementación de barreras perimetrales (firewalls), modelos de seguridad internos y externos, etc. Sin embargo, estas técnicas parecen no ser suficientes para evitar que intrusos logren interferir con el flujo de información óptimo de un sistema, ya que encuentran formas de “brincarse” las barreras de seguridad de muchas organizaciones y además siguen ideando nuevas formas de atacar y amenazar la información, un ejemplo de estos nuevos ataques son los ataques de denegación de servicio. Estos ataques consisten en bombardear un servicio con un gran número de peticiones simultáneas (y por lo general
  • 9. Sistemas Distribuidos 9 inútiles) de modo que el sistema se colapse, obstaculizando el servicio a los usuarios que desean utilizarlo. Como hoy en día la capacidad de los sistemas distribuidos ha crecido mucho, en ocasiones resulta muy difícil o incluso imposiblebloquearelservicioutilizandounasolacomputadoraatacante,por lo que ahora se han desarrollado los ataques de denegación de servicio distribuidos, los cuales hacen uso de miles o incluso millones de computadoras para generarlas peticiones al sistema que se desea bloquear, por lo que bloquear un ataque de esta magnitud resulta sumamente complicado. Si bien no podemos asegurar que un sistema distribuido sea cien por ciento seguro, es importante contar con un esquema de seguridad lo más robusto posible, que a pesar de no ser inmune a todo tipo de ataques, si será capaz de frenar la gran mayoría de dichos ataques. Algunas recomendaciones muy útiles para los desarrolladores, administradores e implementadotes de un sistema distribuido se presentan a continuación: o Efectuar un análisis de riesgos Estose suele mencionarenlaliteraturacomoelprimerpasoa realizarse cuando se plantea la seguridad en un sistema. La idea es muy sencilla: trazar todos los elementos que conforman nuestro sistema (hardware y software) y observar cuáles involucran más o menos riesgo. Esto desembocará en un plan de seguridad cuyo objetivo es disminuir el riesgo total del sistema, que se puede modelar como la suma de los riesgos de sus componentes: RIESGO TOTAL = RIESGO (componente 1) + RIESGO (componente 2)... El riesgo de cada componente está en función directa a las pérdidas que ocasionaría el que éste deje de operar, así como en función de cuán vulnerable es dicho componente en este momento. Por ejemplo, una base de datos de clientes involucra un gran riesgo debido al gran valor que la información representa para una organización; pero una simple PC Windows de la misma organización conectada directamente al Internet (sin firewall/proxy de por medio) también lo representa, debido a que puede ser objeto de un ataque desde el exterior, con el posible riesgo de fácil propagación hacia otros computadores de nuestra red. o Lo más valioso debe alejarse de lo más vulnerable En la fórmula del "riesgo" propuesta arriba, es evidente que los componentes de nuestro sistema con alto valor y alta vulnerabilidad
  • 10. Sistemas Distribuidos 1 0 serán de lejos los que presenten mayor riesgo. Sin embargo, en muchos casos noes sencillodisminuirel valordeciertocomponente(yportanto la pérdida en caso de problemas), y tampoco se puede eliminar completamente la vulnerabilidad del mismo (por ejemplo, si está de cara a Internet.) En este caso lo que conviene es separar o dividir este componente en dos partes suficientemente alejadas e independientes a fin de que el riesgo total disminuya. Por ejemplo, los portales de comercio electrónico deben dar cara a Internet (siendo vulnerables en principio) y a la vez manejar información muy costosa (como transacciones con tarjeta de crédito.) Esto los convierte en un sistema de alto riesgo. Sin embargo es casi universal la separación que se efectúa entre los componentes dedicados a dar cara a Internet (como los Web Servers) y los componentes que manipulan la información comercial (generalmente sistemas DBMS.) En términos prácticos, esto significa que el hacker no puede acceder directamente al DBMS (lo que sería catastrófico), y sólo podría atacar al Web Server, lo que en principio no acarrea mayores consecuencias. o Mantener las cosas simples Un sistema complejo es más difícil de asegurar y potencialmente proporciona una mayor cantidad de puertas abiertas a los atacantes. En general, es recomendable intentar dividir el problema mediante la simplificación de la configuración, para así identificar los puntos o rutas de control vulnerables para incrementar la seguridad. La seguridad debe estar en todos los niveles. Esto se puede expresar más sencillamente como: no confiar el sistema a un único mecanismo de seguridad. La información fluye a través de los distintos componentes y/o capas del sistema y son muchas las instancias en las que se puede mejorar su seguridad. La recomendación estipula que utilicemos todas estas instancias a pesar de que en principio puedan parecer redundantes. Por lo general los administradores tienden a preocuparse por un único punto de acceso desde donde supuestamente hay una gran probabilidad de ser atacados (por ejemplo, la conexión a Internet.) Por tanto se invierte esfuerzo y dineroen controlar este únicopunto bajo la asunción de que es la única puerta de entradaa los maleantes y que por tanto, tras asegurarla, todo el sistema quedará seguro. Esto tiene dos problemas: Muchos ataques o "vulnerabilidades" se originan (de forma inocente o intencional) desde dentrode la organización. El sistema que controla la "puerta" siempre puede fallar.
  • 11. Sistemas Distribuidos 1 1 Esto obliga a implementar la seguridad no en un único punto evidentemente vulnerable, sino en todos los lugares por donde fluye la información al interior de cada componente involucrado. Encriptar tantocomo sea posible La encriptación es un tema complejo perocuya implementación resulta cada vez más sencilla conforme aparecen más productos. Los cambios del año pasado en la legislación norteamericana con respecto a la exportación de productos que encriptan, son un incentivoclaro para que los desarrolladores y vendedores se interesen más en el tema. Engeneral,los canales decomunicaciónmásvulnerablesodemayorcercanía al público requieren una encriptación "más fuerte", es decir, más difícil de descifrar por los curiosos o atacantes. Cierta información conlleva más riesgo que otra, y por tanto requerirá un nivel de encriptación diferenciado. Las herramientas capaces de hacer esto son muchas, dependiendo del contexto en que nos encontremos. Por ejemplo, los sistemas DBMS más avanzados incorporan la encriptación como una opción normal para los datos almacenados, generalmente bajo esquemas propietarios. La tecnología de encriptación de información destinada a pasar a través de la redhaevolucionadobastante,haciéndosepopulareltérminoVPN parahacer referencia a canales que encriptan la información de un modo más o menos transparente. Hay soluciones propietarias así como estándares relativamente implementados como IP Sec. Ciertas aplicaciones estándares han recibido soluciones de encriptación también estándar. El caso del Web encriptado bajo SSL (HTTPS) juntocon la industria de certificados digitales es el caso más conspicuo. De igual modo los estándares para correoelectrónico PGP (o derivados) y S/MIME son integrados cada vez con mayor frecuencia en las aplicaciones de los usuarios finales. En nuestra organización deberíamos encriptar todo lo que sea posible. La razón de esto es evidente si de lo que se trata es de enviar un mensaje privado por Internet. Sin embargo, al interior de la organización la encriptación puede ayudar también. Naturalmente hay que sopesar los inconvenientes que trae la encriptación en términos de incomodidad de uso, costo de licencias, ciclos de CPU, etcétera; con el hecho de que cierta información es definitivamente de carácter público y por tanto no tiene sentido que esté encriptada. Además de estas hay muchas más recomendaciones de seguridad que podemos mencionar, por ejemplo: no confiar en la autenticación estándar, no usar la configuración "estándar", educar a los usuarios, ejecutar sólo los servicios imprescindibles, mantenerse al día con las actualizaciones y hacer
  • 12. Sistemas Distribuidos 1 2 chequeos regulares, establecer planes de contingencia y sistemas de respaldo,mantenercontactoconelproveedordelíneasdecomunicación,no permitirconexionesdirectasdesdelaredinternaaInternet,hacerusodeuna red perimétrica o zona desmilitarizada, prácticas de programación segura, vigilancia, establecimiento de políticas, etc. d) Escalabilidad: La escalabilidad es una de las características más importantes para los desarrolladores de un sistema distribuido. Se dice que un sistema es escalable si logra conservar su efectividad cuando hay el número de recursos y el número de usuarios incrementa significativamente. La escalabilidad de un sistema pude medirse en tres aspectos diferentes: Con respecto a su tamaño: lo que significa que se pueden agregar más usuarios y más recursos al sistema de una manera muy fácil. Con respecto a su localización o área de implementación: lo que significa que tanto los usuarios como los recursos pueden estar en locaciones remotas y separadas el uno del otro. Con respecto a su administración: lo que significa que puede ser fácil de administrar a pesar de que se utiliza en diferentes organizaciones independientes que cuentan con diferentes políticas de seguridad y que hacen un uso particular del sistema. Desafortunadamente, un sistema que es escalableen unoomás deestos aspectosporlogeneralafectael rendimiento del sistema conforme al crecimiento del mismo. Problemas de la Escalabilidad Cuando se necesita escalar un sistema a un nivel más alto es muy común que surja algún tipo de problema. Si consideramos la escalabilidad con respecto al tamaño de un sistema, nos encontramos con las limitaciones que presentan los servicios, los datos y los algoritmos centralizados. En muchos sistemas distribuidos es común encontrarservicios centralizados, es decir, que son implementados en un mismo servidor, lo que puede ocasionar un problema muy obvio: este servidor puede convertirse en un cuello de botella si el número de usuarios crece, y a pesar de tener una capacidad de procesamiento y almacenamiento virtualmente ilimitada, la comunicación con este servidor puede llegar a tener un límite y eventualmente impedir el crecimiento del sistema. Desafortunadamente el uso de un sólo servidor puede ser inevitable, ya que por lo general tenemos servicios que trabajan con información muy sensible y que tiene que ser lo más segura posible, por lo que el tener esta información almacenada en diferentes servidores puede llegara poner la información en riesgoy hacer el sistema más vulnerable.
  • 13. Sistemas Distribuidos 1 3 De la misma manera, el almacenamiento centralizado de la información puede ser un grave problema para un sistema distribuido, ya que a pesar de que un sólo servidor nos puede ofrecer la capacidad de almacenamiento que necesitamos, es muy poco probable que dicho servidor permita el acceso simultáneo a miles o incluso millones de usuarios que desean consultar la información almacenada en él. Un ejemplo de esto es el Sistema de Nombre de Dominio, que a pasar de poder almacenar todos los registros en una sola base de datos de varios gigabytes, no podría daruna respuesta a los millones de usuarios de Internet que accedan este servicio simultáneamente. El uso de algoritmos centralizados es en teoría la solución óptima a un problema de computación distribuida, sin embargo, en la práctica podemos ver que el uso de este tipo de algoritmos en un sistema distribuidogrande no es una buena idea, ya que colectar y transportar los datos de entrada y salida del sistema hacia un sólo punto en el que se computan dichos datos pudiese sobrecargar parte de la red con todos los mensajes que necesita enviar y recibir, además de que el computo de toda la información en una sola máquina tiene más riesgo a fallos y puede resultar más tardada. La solución a este problema es el uso de algoritmos descentralizados, los cuales cuentan conciertascaracterísticasquelosdiferenciandelosalgoritmoscentralizados, entre las que podemos mencionar: Ninguna máquina tiene información completa del estado del sistema. Cada máquinatomadecisionespropiasbasándosesolamenteeninformación local. Problemas o fallos de una máquina no arruinan el procesamiento de todo el algoritmo. No necesariamente se cuenta con un reloj global (algoritmos no sincronizados). A pesarde queen unaLAN pudiesesincronizarselaejecucióndeunalgoritmo descentralizado, este mismo procedimiento pudiese ser muy complicado o incluso imposible si el algoritmo esta distribuidoen una red más amplia, por lo que no se debe de depender en la existencia de un reloj global para hacer posible la ejecución de un algoritmo de este tipo. Por otro lado tenemos los problemas de la escalabilidad con respecto a la localización o área de implementación de un sistema distribuido. Una de las principales razones por las cuales resulta difícil escalar los sistemas distribuidos que existen actualmente, es que dichos sistemas fueron diseñados para trabajar redes de acceso locales (LANs) y que están basados en una comunicación síncrona. En este tipo de comunicación el cliente hace la solicitud de un servicio y hace un bloqueo de la comunicación hasta que recibe la respuesta. Este acercamientoporlo general trabaja bien en LANs en las que la comunicación entre dos máquinas por lo general no toma más de
  • 14. Sistemas Distribuidos 1 4 algunos cientos de microsegundos. En el caso de las WANs, tenemos que tomar en cuenta que la comunicación entre los procesos pudiese tomar varios cientos de milisegundos, lo que representa un alentamiento muy considerable del sistema. Otro problema a considerar es que la comunicación en una WAN es poco confiable y en la gran mayoría de los casos es punto a punto, al contrario de las redes locales que generalmente son muy confiables y permiten hacer difusiones o transmisiones de tipo “broadcast”, lo que hace mucho más fácil el desarrollo de sistemas distribuidos. La escalabilidad con respecto a la localización o área de implementación esta directamente relacionada con los problemas de soluciones centralizadas comentados anteriormente. Si tenemos un sistema con muchos componentes centralizados, es muy claro que la escalabilidad del área de implementación será imitada gracias a los problemas de desempeño y confiabilidad que trae consigo la implementación en un área de redes extensa. Además, los componentes centralizados también provocan el desperdicio de recursos de red. Finalmente, podemos mencionar los problemas que acarrea la escalabilidad de la administración de un sistema distribuido. Este problema se da cuando unsistema distribuidodeexpandeaotrodominio,queporlogeneralcontará con diferentes políticas de uso y pago de recursos, administración y seguridad. Por lo general cuando esto pasa se deben de tomar al menos dos tipos de medidas de seguridad: El sistema distribuido tiene que protegerse de ataques malignos provenientes del nuevo dominio, y restringirel acceso a los servicios y datos que no están a disponibilidad de los usuarios del mismo. El nuevodominiotienequeprotegersedeataquesmalignosprovenientesdel sistema distribuido. Básicamente, el nuevo dominio no sabe que tipo de información puede esperar del código enviado por el nuevo dominio por lo que pudiera decidir limitar los permisos de acceso a dicho código. Técnicas de Escalabilidad Una vez quemencionamosyalosproblemasdelaescalabilidad,analizaremos algunas maneras de solucionar dichos problemas. Como los problemas de escalabilidad de los sistemas distribuidos se manifiestan como problemas de rendimiento causados por la capacidad limitada de servidores y de las redes de comunicaciones, existen solamente tres técnicas de escalabilidad: eliminar la latencia de las comunicaciones, distribución y replicación. Eliminar la latencia de las comunicaciones es útil en el caso de querer lograr la escalabilidad geográfica de un sistema, la idea básica es simple: tratar de evitar la espera de respuestas a las peticiones que se hagan a servicios
  • 15. Sistemas Distribuidos 1 5 remotos lo más que se pueda. Esencialmente, esto significa que se tiene que construir la aplicación que realiza las peticiones de tal manera que use solamente métodos de comunicación asíncronos, es decir, que el cliente envía la petición al servidor, mientras espera la respuesta el cliente aprovecha ese tiempo para realizar tareas locales más importantes y cuando recibe la respuesta del servidor, el proceso que se estaba realizando se interrumpe y se atiende la respuesta recibida. Esta solución parece fácil, sin embargo, hay muchas aplicaciones que no pueden hacer un uso efectivo de la comunicación asíncrona, por ejemplo, aplicaciones interactivas en las que el usuario no tiene nada mejor que hacer más que esperar la respuesta del servidor, por que esta se tiene que dar lo más rápido que sea posible. En dichos casos, es mucho mejor solucionar el problema de la latencia reduciendo el tráfico generado entre el cliente y el servidor cuando se comunican entre sí; esto lo podemos lograr moviendo parte de la computación que normalmente se hace del lado del servidor al cliente, para que así sea el mismo proceso que hace la solicitud del servicio quien tenga que procesarlo. Otra técnica importante para lograr la escalabilidad es la distribución, que consiste en tomar un elemento, separarlo en partes pequeñas y distribuir esas partes en todo el sistema. Un ejemplo de un sistema distribuido que hace uso de la distribución es el servicio de nombre de dominio(DNS), el cual esta distribuido en diferentes servidores que permiten el acceso a la misma información a todos los usuarios, sin necesidad de tener un sólo servidor que proporcione este servicio. En la mayoría de los casos, los problemas de escalabilidad los vemos reflejados en el rendimiento del sistema, por lo que generalmente la replicación de los componentes del sistema distribuido puede resultar ser unabuenaidea.La replicaciónaumentaladisponibilidaddeloscomponentes del sistema y además ayuda a balancear la carga entre los componentes que se replican, con lo que se logra una mejora del rendimiento del sistema. Si consideramos un sistema que se encuentra distribuido en una red muy extensa, el hecho de tener una copia de algún componente más cerca, también mejora el rendimiento del sistema puesto que soluciona los problemas de latencia de las comunicaciones que ya mencionamos anteriormente. Una forma especial de replicación es el Cacheo, el cual consiste en guardar una copia de algún recurso (por lo general, de datos) de forma temporal en un lugar cercano al cliente, para que éste lo pueda acceder más fácilmente. En contraste con la replicación, el cachear un recurso es una decisión que es tomadaporelcliente,ynoporlosdiseñadotesdelsistema. Un problemamuy serio que puede traer el cacheo, es que las copias que se hacen del recurso (o de datos) pueden no actualizarse a su debido tiempo, por lo que al haber varias copias diferentes del mismo recurso, lo que provoca problemas de consistencia dentro del sistema; el nivel de inconsistencia que pueda ser
  • 16. Sistemas Distribuidos 1 6 tolerado por un sistema depende del uso que se le da a al recurso que se esta replicando, en el caso de páginas Web estáticas, por ejemplo, pudiese ser bastante tolerable, sin embargo, en el caso de páginas dinámicas o de sistemas en tiempo real, la replicación puede traer consigo muchos problemas. e) Tratamiento de Fallos: El fallo tanto del hardware como el software es algo prácticamente inevitable, y por más confiable que pueda parecer algún componente, siempre es importante estar preparado para cuandoeste falle. En un sistema centralizado por lo general el fallo de cualquier componente del sistema provoca que todos los servicios que este ofrece dejen de funcionar, en cambio, en un sistema distribuido, los fallos son parciales, puesto que solo afectan a los servicios que el componente que fallo este prestando, mientras que otros servicios que prestan otros componentes siguen funcionando. El tratamiento de fallos en un sistema distribuido es una tarea difícil, pero quese puedelograrsise utilizanlas técnicasadecuadas,segúnel sistema que se desee proteger. Algunas de las técnicas más comunes son: Detección de Fallos: obviamente noes posible tratar un fallo si este no se ha detectado, sin embargo, la detección de un fallo dentro de un sistema distribuido puede no ser tan sencillo como parece, recordemos que además de componentes de hardware y software, los sistemas distribuidos operan gracias a la transmisión de mensajes, y el funcionamiento del sistema depende en gran parte de estas transmisiones de datos entre los diferentes componentes; un fallo en la transmisión de datos entre componentes no es fácil detectar, pero es algo que podemos esperar (dependiendo del medio por el que se haga la transmisión y otras condiciones) y al saber que existe la posibilidad de ese fallo, podemos monitorear y aplicar técnicas que aseguren que dicha transmisión siempre sea correcta. Enmascaramiento de Fallos: una vez que un fallo es detectado, es importante encontrar la manera para que un usuario del sistema no note dicho fallo y que pueda seguir utilizando el sistema de manera normal, esto es, ocultar los fallos del sistema y encargarse de que los servicios que se ofrecen al cliente nunca sean interrumpidos. Son muchos ejemplos del enmascaramiento de fallos, en el caso de un mensaje que se corrompió al ser enviado, una manera de ocultar el fallo es haciendo la solicitud de reenvío del mensaje, y de esta manera el usuario nunca notará que hubo un problema.Otroejemplolodan las técnicasde redundanciaqueexplicaremos más adelante, pero que básicamente consiste en tener disponibles varios elementos que puedan dar el mismo servicio y que en caso de que uno falle, otro este en la disponibilidad de realizar el trabajo en su lugar, esto puede darse cuando fallan componentes de un servidor (discos duros, tarjetas de
  • 17. Sistemas Distribuidos 1 7 red, etc.), o incluso cuando fallan las conexiones a la red o los sistemas de bases de datos. Tolerancia a Fallos: es importante saber cuando un sistema puede llegar a tener ciertos problemas sin que estos afecten de manera grave al usuario de los servicios proporcionados, para así, ignorar la ocurrencia de dichos fallos cuando la aplicación lo soporte, o bien, hacer saber al cliente que hay un problema en lugar de gastar tiempo y recursos innecesarios para corregirlo cuando probablemente el problema no se pueda arreglar rápido y el cliente termine por abortar el proceso; Pretender arreglar de manera inmediata todos los problemas que puedan surgir en un sistema puede resultar incluso dañino para el mismo sistema, puesto que hay problemas que mientras son arreglados pueden afectar el rendimiento de otros componentes del sistema que sí están trabajando. Recuperación Frente a Fallos: Una vez que fue detectado un fallo y que se ha decidido arreglarlo, hay que encontrar la mejor manera de hacerlo, y además, de recuperar el estado del sistema antes de que ocurriera el fallo; esto requiere del software adecuado para poder reconstruiro bien retractar los cambiosquenofueroncompletadosalmomentoenquefueinterrumpido el sistema, un ejemplo de esto lo podemos ver en los sistemas manejadores de bases de datos, que se sirven de una bitácora de las transacciones que se realizan y de acuerdo a esta bitácora se decide reconstruir o retractar las transacciones hechas sobre la base de datos antes de que se interrumpiera el funcionamiento de la misma. Redundancia: un sistema distribuido puede lograr ser tolerante a fallos gracias a la utilización de componentes redundantes dentro del sistema. La redundancia se logra con la replicación de dichos componentes y con la habilidad del sistema de recurrir a los componentes de respaldo en caso de que el componente de uso primario falle, todo esto por supuesto, sin que el usuario se percate de lo que esta sucediendo. La redundancia se puede dar en muchas partes del sistema: componentes internos de los servidores, servidores de aplicaciones, de Web, de archivos, de correo o de bases de datos, sistemas de almacenamiento, conexiones a la red de comunicación, etc. Es muy importante tomar en cuenta que todos los componentes que estén replicados en el sistema deben mantenerse actualizados para evitar problemasdeconsistencia,yademás,la actualizacióndelainformaciónentre dichos componentes no debe de tener un efecto significativo para las necesidades de transmisión de datos del sistema.
  • 18. Sistemas Distribuidos 18 Las técnicas antes mencionadas no son las únicas, pero si las más utilizadas, estas técnicas deben de proporcionar las herramientas necesarias para aumentar el grado de disponibilidad de cualquier sistema distribuido, ya que al saber como tratar un fallo del sistema, también es posible encontrar la manera de reconfigurar el sistema para que los servicios que este proporciona no sean interrumpidos, o que en el peor de los casos sólo sean afectados los servicios proporcionados por los componentes afectados. f) Concurrencia: El control de concurrencia trata con los problemas de aislamiento y consistencia del procesamiento de transacciones. El control de concurrencia de un sistema distribuido asegura que la consistencia de los datos que se almacenan y que se procesan en el sistema se mantienen en un ambiente distribuido multiusuario. Si las transacciones son internamente consistentes, la manera más simple de lograr este objetivo es ejecutar cada transacción sola, una después de otra. Sin embargo, esto puede afectar mucho el desempeño de un sistema distribuido dado que el nivel de concurrencia se reduce al mínimo. El nivel de concurrencia, es decir, el número de transacciones simultáneas activas, es probablemente el parámetro más importante en sistemas distribuidos. Por lo tanto, los mecanismos de control de concurrencia buscan encontrar un balance entre el mantenimiento de la consistencia de los datos y el mantenimiento de un alto nivel de concurrencia. Si no se hace un adecuado control de concurrencia, se pueden presentar dos anomalías. En primer lugar, se pueden perder actualizaciones provocando que los efectos de algunas transacciones no se reflejen en los datos almacenados. En segundo término, pueden presentarse recuperaciones de información inconsistentes. Las técnicas que se utilizan para asegurar un control de concurrencia de un sistema distribuido, como hilos, semáforos, candados, etc., se discutirán más adelante, en la parte de análisis de la arquitectura de clienteservidor. g) Transparencia: Se dice que un sistema distribuido es transparente, cuandoeste es capaz de presentarse ante los usuarios y las aplicaciones como si fuese un sistema que corre en una sola computadora, y no como un sistema cuyos procesos y recursos están distribuidos físicamente en varias computadoras. Tipos de Transparencia: Según el Manual de Referencia ANSA y el Modelo de Referencia para el Procesamiento Distribuido Abierto de la Organización Internacional de Estándares (ISO 1995), el concepto de transparencia de puede aplicar a 8 aspectos diferentes de un sistema distribuido:
  • 19. Sistemas Distribuidos 19 o Transparencia de Acceso: oculta las diferencias entre la representación de los datos y la manera en que los recursos son accedidos. o Transparencia de Ubicación: oculta la localización de los recursos y permite el acceso a los mismos sin la necesidad de conocer su localización. o Transparencia de Migración: oculta que un recurso o un cliente del sistema sea reubicado, lo que permite hacer dichas reubicaciones sin afectar la operación de los usuarios y los servicios. o Transparencia de Recolocación: oculta que un recurso o un cliente del sistema pueda moverse a una ubicación diferente mientras están en uso. o Transparencia de Replicación: oculta la existencia de múltiples ejemplares del mismo recurso. o TransparenciadeConcurrencia:ocultaqueunrecursoseacompartido por varios usuarios sin interferir entre ellos mismos. o Transparencia Frente a Fallos: oculta el fallo y recuperación de un recurso dentro del sistema, dejando que los usuarios terminen sus tareas a pesar de los fallos de hardware o software que pudieran presentarse. o Transparencia de Persistencia: oculta si un recurso (de software) esta almacenado en memoria o en disco. Desde el punto de vista de los usuarios, la transparencia se logra cuando: o Sus pedidos se satisfacen con ejecuciones en paralelo en distintas máquinas. o Se utilizan una variedad de servidores de archivos. o El usuario no necesita saberlo ni notarlo. La transparencia desde el puntode vista de los programas significa diseñar la interfaz de llamadas al sistema de modo que no sea visible la existencia de varios procesadores. No es transparente un sistema donde el acceso a los archivos remotos se realice mediante: El establecimiento explícito de una conexión en la red con un servidor remoto. El envío posterior de mensajes, donde el acceso a los servicios remotos será distinto al acceso a los servicios locales. Con todo esto en mente es posible diseñar un sistema que cuente con las características necesarias para lograr la transparencia en tantos aspectos como sea posible. Los dos más importantes son la transparencia de acceso y la transparencia de ubicación, la primera se relaciona con la forma en que representamos los datos en un sistema distribuido, es importante presentar
  • 20. Sistemas Distribuidos 20 al usuario o a los programadores el acceso indistinto a recursos locales o remotos, sin que este se de cuenta de la ubicación de los mismos, lo que al mismo tiempo nos conduce a tener transparencia de ubicación dentro del sistema. Como no se sabe donde están localizados los recursos, tampoco se debe de saber si estos se mueven a una nueva ubicación, se este o no utilizando el sistema, esto es lo que se conoce como transparencia de Migración y Recolocación respectivamente. Ejemplos de transparencia de acceso, ubicación y migración es el sistema de nombre de dominio utilizado por los usuarios de Internet, estos utilizan un nombre de dominio como “dominio.com” para acceder este sitio, sin importar en donde este localizado el sitio de Internet, el usuario podrá acceder al servidor en el que se este hospedando la página, y si se decide mover este sitio a otro servidor, basta con redireccionaral cliente al servidor adecuado, sin que el cliente lo note. Porsu lado, si el cliente esta accediendo al sitio desde una conexión inalámbrica dentro de su lugar de trabajo y esta enmovimiento,esposibleseguirproporcionandoserviciossininterrupciones al cliente siempre y cuando el sistema sea transparente a la recolocación y permita que el cliente siga conectado a pesar de cambiar su ubicación física. Por otro lado, la replicación juega un papel muy importante dentro de un sistema distribuido, en el caso de los nombre de domino, los servidores DNS trabajan en un sistema de replicación distribuida organizado jerárquicamente que hace posible el acceso simultáneo a millones de usuarios que requieren de la información que contiene esta base de datos, sin embargo, la transparencia de la replicación en el sistema consiste en esconder que existen varias copias de un mismo recurso, y por lo general implica que dentro del mismo sistema se cuenta con transparencia de ubicación, puesto que de otra manera sería imposible acceder a las copias de los recursos con que se cuenta. La idea de un sistema distribuido es poder proporcionar a sus usuarios un servicio simultáneo a un mismo recurso; es entonces muy común que varios usuarios intenten hacer uso del mismo recurso al mismo tiempo y que traten de competir por el uso de dicho recurso; en estos casos la transparencia de concurrencia nos ayuda a ocultar al usuario que además de él, hay otros usando o intentando usar el mismo recurso. El reto más interesante de esta parte del diseño de un sistema distribuido es que también se tiene que considerar la consistencia de los datos que se almacenarán en el sistema, por lo que habrá que tomar decisiones en cuanto a las técnicas de candados y de uso de semáforos a utilizarse para lograr tener un sistema concurrente y a su vez consistente. La transparencia frente a fallos consiste en esconder cualquier falla que ocurra en el sistema para que el usuario pueda hacer uso del mismo a pesar
  • 21. Sistemas Distribuidos 21 de que alguno de sus componentes no este trabajando como es debido, uno de los retos más desafiantes de esta tarea es saber distinguir entre recursos que están fallando y recursos que simplemente están siendo accedidos por muchos usuarios y cuya respuesta puede alentarse. Es importante tener un buen esquema de replicación y de balanceo de cargas para evitar estas situaciones, pero al ser prácticamente inevitables es necesario considerar que hacer cuando el sistema esta en una situación como la antes mencionada, y sobre todo determinar que tipo de respuesta enviar al cliente para que este no se de cuenta de las fallas del sistema. Grado de Transparencia: A pesar de que la transparencia es una característica generalmente deseable para cualquier sistema distribuido, hay situaciones en las que el pretender enmascarar todos los aspectos relacionados con la distribución de los componentes del sistema puede no ser lo más óptimo; en algunas ocasiones es mejor hacer del conocimiento del usuario que el sistema esta compuesto por varios elementos y que por más óptima que sea la transmisión de mensajes o ladistribuciónyreplicaciónde componentes,habráciertotiempo de respuesta mínimo entre cada transacción que es imposible evitar. Hay también una relación directa entre el nivel de transparencia y el rendimiento de un sistema distribuido, por lo que lo ideal es encontrar un bienequilibrioentreambosfactores.Porejemplo,si pretendemosgarantizar la transparencia de replicación en un sistema, es necesario que el usuario sepa que para garantizar la consistencia de la información es necesario actualizar todos los componentes replicados cuando se hace un cambio, por lo que el acceso al sistema puede verse interrumpido por algunos segundos mientras esta operación se lleva a cabo. Es muy importante considerar la transparencia como uno de los principales objetivos del diseño e implementación de un sistema distribuido, sin embargo, es importante tener en consideración otros factores que pueden ser afectados por la transparencia, principalmente el desempeño general del sistema. 1.2. Ventajas y Factores de Distribución: En general, los sistemas distribuidos exhiben algunas ventajas sobre los sistemas centralizados que se describen enseguida. a) Factores Estratégicos: Hoy en día, los clientes, proveedores y compañías se encuentran generalmente en diferentes localidades alejados los unos de los otros. Debido a que todos estos utilizan computadoras, las redes de información
  • 22. Sistemas Distribuidos 22 que los unen y que les permiten interactuar pueden ofrecer a las empresas mayor competitividad. b) Costos de Equipo: El cociente precio/desempeño de la suma del poder de los procesadores separados,contraelpoderdeunosolocentralizado,es mejorcuandoestán distribuidos, esto lo podemos calcular con base al costo promedio de MIPs (Millones de Instrucciones por Segundo), el cual es mucho mayor en mainframes que en un número fijo de estaciones de trabajo. Sin embargo, cabe mencionar que los mainframes soportan cientos de dispositivos y permiten que miles de clientes compartan los mismos recursos computacionales del mismo, aunque la diferencia en costos es enorme. c) Conocimiento y control de los usuarios: La gran mayoría de los usuarios de los servicios computacionales son cada vez más cultos y competentes porlo que dichos usuarios desean operar sus propios sistemas, a su manera, por lo que no están contentos con los sistemas centralizados que llevan el control sobre los sistemas que son desarrollados, cuándo, cómo y por quiénes son operados. La computación distribuida ofrece a los usuarios estar más cerca de los procesos y de los datos. d) Costos de Desarrollo: Cuando se trabaja con un sistema distribuido que cuenta con diferentes módulosde softwarequepuedenintegrasecomopartedeun solosistema, los usuarios finales interesados en desarrollar sus propias aplicaciones pueden hacerlo utilizando sus propias máquinas, lo que trae como consecuencia la reducción del costo y tiempo de desarrollo de una nueva aplicación. e) Interfaces de Usuarios: La mayoría de las estaciones de trabajo que se utilizan hoy en día soportan el uso de interfaces gráficas sofisticadas con dispositivos de señalamiento y sistemas de audio y video; esta tecnología resulta ser muy atractiva especialmente para usuarios con diferentes estilos de aprendizaje que por lo general se decepcionan por los tradicionales repotes o interfaces presentadas en formato de texto o con gráficos de poca calidad.
  • 23. Sistemas Distribuidos 23 f) Flexibilidad y Facilidad de Configuración: Los sistemas distribuidos, y en general la computación descentralizada, ofrece muchas opciones para mejorar el desempeño y la fiabilidad de un sistema mediante el uso de procesos y datos redundantes. g) Explotación del Hardware: Las estaciones de trabajo y computadoras personales permiten el desarrollo de software especializado que hace uso de las características específicas del hardware de la estación de trabajo, cada una de estas estaciones puede ser utilizada como un servidor especializado (por ejemplo, de correos, de Web, de archivos, de bases de datos, etc.) y estos servidores con los que satisfacen las peticiones de clientes que desean hacer uso de los servicios con los que cuenta dicho servidor. A esta configuración se le conoce comúnmente como configuración “cliente- servidor” y se explicará a detalle más adelante. h) Nuevas aplicaciones: Muchas aplicaciones nuevas de tiempo real requieren ser procesadas y acceder datos de manera local, lo cual es posible solamente si se utiliza un sistema distribuido con estaciones de trabajo distribuidos en los lugares que más se requiera. i) Crecimiento: El poder total del sistema puede irse incrementando al añadir pequeños sistemas, lo cual es mucho más difícil en un sistema centralizado y caro. Por otro lado, los sistemas distribuidos también exhiben algunas ventajas sobre sistemas aislados. Estas ventajas son: Compartir datos: un sistema distribuido permite compartir datos más fácilmente que los sistemas aislados, que tendrían que duplicarlos en cada nodo para lograrlo. Compartirdispositivos:unsistema distribuidopermiteaccederdispositivos desde cualquier nodo en forma transparente, lo cual es imposible con los sistemas aislados. El sistema distribuido logra un efectosinergético.
  • 24. Sistemas Distribuidos 24 Comunicaciones: la comunicación persona a persona es factible en los sistemas distribuidos, en los sistemas aislados no. Flexibilidad:La distribucióndelascargasdetrabajoes factibleenel sistema distribuido, se puede incrementarel poder de cómputo. 1.3. Desventajas y Factores a Considerar: Así como los sistemas distribuidos exhiben grandes ventajas, también se pueden identificar algunas desventajas, algunas de ellas tan serias que han frenado la producción comercial de sistemas distribuidos en la actualidad. a) Falta de Estándares: La falta de estándares y herramientas de desarrollo para ambientes distribuidos pueden crear graves problemas de compatibilidad, portabilidad e interconectividad en los sistemas distribuidos. Esto se da cuanto se crean muchas copias incompatibles de la misma aplicación. El desarrollo y uso de estándares para aplicaciones, computadoras y redes son desarrolladas en lugares, por personas y en tiempos diferentes, lo cual resulta muy complicado, y es por eso que es común ver este tipo de problemas en un sistema distribuido. b) Complejidad del Diseño: Los grandes sistemas de computadoras pueden distribuirse en muchas computadoras, sin embargo, separar el sistema en muchas partes y decidir en que lugar van a residir dichas partes, no es una tarea trivial. Los problemas de compartir datos y recursos son tan complejos que los mecanismos de solución generan mucha sobrecargaal sistema haciéndolo ineficiente. El verificar, por ejemplo, quiénes tienen acceso a algunos recursos y quiénes no, el aplicar los mecanismos de protección y registro de permisosconsumedemasiados recursos.En la actualidad,lassoluciones para estos problemas son incipientes. c) Falta de Infraestructura en Soporte y Administración: Hasta ahora muchos de los problemas de administración y soporte que demanda un sistema distribuido no han sido solucionados, y las soluciones
  • 25. Sistemas Distribuidos 25 que existen para algunos otros problemas son limitadas. Algunos ejemplos de estos problemas son la planeación de sistemas de información de acuerdo a la cambiante tecnología que hay hoy en día, el manejo de recursos distribuidos y el diseño de la estructura organizacional para la computación distribuida. d) Seguridad e Integridad: La distribución de datos y de programas en múltiples localidades pueden crear muchos problemas de seguridad e integridad que no con fáciles de solucionar y que por lo general requieren también de un proceso paralelo que ayude a solucionar dichos problemas, por lo que la carga del sistema aumenta y el rendimiento en general puede verse afectado. e) Opciones: La disponibilidad de muchas opciones y decisiones puede ser tanto buena, como mala. En ocasiones tener muchas opciones nos quita tiempo, puesto que tenemos que analizar, entender y probar todas las que están disponibles antes de llegar a tomar una decisión cobre cual es la mejor. Por el lado contrario, el tenermuchas opciones nos permite diseñar un sistema que este conformado. 2. Arquitectura Cliente Servidor 1.1. Fundamentos de Arquitectura Cliente Servidor Definiciones Básicas Para entender el concepto de la arquitectura de cliente servidor, antes es necesario conocer algunas definiciones. Entre las principales definiciones se tiene: a) Desde un punto de vista conceptual: Es un modelo para construir sistemas de información, que se sustenta en la idea de repartir el tratamiento de la información y los datos por todo el sistema informático, permitiendomejorar el rendimiento del sistema global de Información b) En términos de arquitectura:
  • 26. Sistemas Distribuidos 26 Los distintos aspectos que caracterizan a una aplicación (proceso, almacenamiento, control y operaciones de entrada y salida de datos) en el sentido más amplio, están situados en más de un computador, los cuales se encuentran interconectados mediante unared de comunicaciones. c) IBM define al modelo Cliente/Servidor Es la tecnología que proporcionaal usuario final el acceso transparente a las aplicaciones, datos, servicios de cómputo o cualquier otrorecurso del grupo de trabajo y/o, a través de la organización, en múltiples plataformas. El modelo soporta un medioambiente distribuido en el cual los requerimientos de servicio hechos por estaciones de trabajo inteligentes o "clientes'', resultan en un trabajo realizado por otros computadores llamados servidores. Para entender mejor las definiciones antes mencionadas, analizaremos ahora algunos de los conceptos mencionados en dichas definiciones: Un Cliente es el que inicia un requerimiento de servicio. El requerimiento inicial puede convertirse en múltiples requerimientos de trabajo a través de redes LAN o WAN. La ubicación de los datos o de las aplicaciones es totalmente transparente para el cliente. Un Servidor es cualquier recurso de cómputo dedicado a responder a los requerimientosdelcliente.Losservidorespueden estarconectadosalosclientes a través de redes LANs o WANs, para proveer de múltiples servicios a los clientes tales como impresión, acceso a bases de datos, fax, procesamiento de imágenes, etc. Es importante mencionar que un servidor no es necesariamente un dispositivofísico(unacomputadora)sinoquehayqueentenderalservidorcomo un proceso que se encarga de atender las peticiones de un cliente. Con estos elementos podemos ya darnos una idea de lo que es el modelo cliente servidor, sin embargo, es necesario analizar más a fondo las características de la arquitectura si queremos llegar a entender por completo el funcionamiento de la misma. Elementos de la Arquitectura Cliente/Servidor Una arquitectura es un entramado de componentes funcionales que aprovechandodiferentes estándares, convenciones, reglas y procesos, permite integrar una amplia gama de productos y servicios informáticos, de manera que pueden ser utilizados eficazmente dentro de la organización. Debemos señalar que para seleccionar el modelo de una arquitectura, hay que partir del contexto tecnológico y organizativo del momento y, que la arquitectura Cliente/Servidorrequiere una determinada especialización de cada uno de los diferentes componentes que la integran.
  • 27. Sistemas Distribuidos 27 En esta aproximación, y con el objetivo de definir y delimitar el modelo de referencia de una arquitectura Cliente/Servidor, debemos identificar los componentes que permitan articular dicha arquitectura, considerando que toda aplicación de un sistema de información está caracterizada por tres componentes básicos: o Presentación/Captación de Información o Procesos o Almacenamiento de la Información Y se integran en una arquitectura Cliente/Servidor en base a los elementos que caracterizan dicha arquitectura, es decir: o Puestos de Trabajo o Comunicaciones o Servidores De estos elementos debemos destacar: El Puesto de Trabajo o Cliente “Una Estación de trabajo o microcomputador(PC: Computador Personal) conectado a una red, que le permite acceder y gestionar una serie de recursos”, el cual se perfila como un puesto de trabajo universal. Nos referimos a un microcomputador conectadoal sistema de información y en el que se realiza una parte mayoritaria de los procesos. Se trata de un fenómeno en el sector informático. Aquellos responsables informáticos que se oponen a la utilización de los terminales no programables, acaban siendo marginados por la presión de los usuarios. Debemos destacarque el puesto de trabajo basado en un microcomputador conectado a una red, favorecelaflexibilidadyel dinamismoenlas organizaciones.Entreotrasrazones, porque permite modificar la ubicación de los puestos de trabajo, dadas las ventajas de la red. Los Servidores o Back-End. “Una máquina que suministra una serie de servicios como Bases de Datos, Archivos, Comunicaciones,...)”. Los Servidores, según la especialización y los requerimientos de los servicios que debe suministrar pueden ser: o Mainframes o Minicomputadoras o Especializados (dispositivos de red, imagen, etc.) Una característica a considerar es que los diferentes servicios, según el caso, pueden ser suministrados por un único Servidor o por varios Servidores especializados. Las Comunicaciones en sus dos vertientes:
  • 28. Sistemas Distribuidos 28 Infraestructura de redes: Componentes Hardware y Software que garantizan la conexión física y la transferencia de datos entre los distintos equipos de la red. Infraestructura de comunicaciones: Componentes Hardware y Software que permiten la comunicación y su gestión, entre los clientes y los servidores. La arquitecturaCliente/Servidoreselresultadodela integracióndedosculturas. Por un lado, la del Mainframe que aporta capacidad de almacenamiento, integridad y acceso a la información y, por el otro, la del computadorque aporta facilidad de uso (cultura de PC), bajo costo, presentación atractiva (aspecto lúdico) y una amplia oferta en productos y aplicaciones. Características del modelo Cliente/Servidor En el modelo Cliente/Servidorpodemos encontrar las siguientes características: a) El Cliente y el Servidor pueden actuar como una sola entidad y también pueden actuar como entidades separadas, realizando actividades o tareas independientes. b) Las funciones de Cliente y Servidor pueden estar en plataformas separadas, o en la misma plataforma. c) Un servidor proporciona servicio a múltiples clientes en forma concurrente. d) Cada plataforma puede ser escalable independientemente. Los cambios realizados en las plataformas de los Clientes o de los Servidores, ya sean por actualización o por reemplazo tecnológico, se realizan de una manera transparente para el usuario final. e) La interrelación entre el hardware y el software están basados en una infraestructura poderosa, de tal forma que el acceso a los recursos de la red no muestra la complejidad de los diferentes tipos de formatos de datos y de los protocolos.Unsistemade servidoresrealiza múltiplesfuncionesalmismo tiempoquepresentaunaimagendeunsólosistema alas estaciones Clientes. Esto se logra combinando los recursos de cómputo que se encuentran físicamente separados en un sistema lógico, proporcionandode esta manera el servicio más efectivo para el usuario final. También es importante hacer notar que las funciones Cliente/Servidor pueden ser dinámicas. Ejemplo, un servidor puede convertirse en cliente cuando realiza la solicitud de servicios a otras plataformas dentro de la red. Tiene capacidad para permitir integrar los equipos ya existentes en una
  • 29. Sistemas Distribuidos 29 organización, dentro de una arquitectura informática descentralizada y heterogénea. f) Además se constituye como el nexo de unión más adecuado para reconciliar los sistemas de información basados en mainframes o minicomputadoras, con aquellos otros sustentados en entornos informáticos pequeños y estaciones de trabajo. g) Designa un modelo de construcción de sistemas informáticos de carácter distribuido. h) Su representación típica es un centro de trabajo (PC), en donde el usuario dispone de sus propias aplicaciones de oficina y sus propias bases de datos, sin dependencia directa del sistema central de información de la organización,altiempoquepuedeaccederalos recursosde este host central y otros sistemas de la organización ponen a su servicio. En consecuencia, parte del control de las aplicaciones se transfieren del computador central (servidor) a los PCs o estaciones de trabajo (clientes), adquiriendo estas plataformas, entonces, un papel protagonista en conjunto del sistema de información. En conclusión, Cliente/Servidor puede incluir múltiples plataformas, bases de datos, redes y sistemas operativos. Estos pueden ser de distintos proveedores, en arquitecturas propietarias y no propietarias y funcionando todos al mismo tiempo. Por lo tanto, su implantación involucra diferentes tipos de estándares: APPC, TCP/IP, OSI, NFS, DRDA corriendo sobre DOS, OS/2, Windows o PC UNIX, en Token-Ring, Ethernet, FDDI o medio coaxial, sólo por mencionar algunas de las posibilidades. Dependiendo de estas características y de su combinación, es el grado de complejidad de una solución C/S. Ventajas y Desventajas del modelo Cliente/Servidor El esquema Cliente/Servidor posee las siguientes ventajas: a) Uno de los aspectos que más ha promovido el uso de sistemas Cliente/Servidor, es la existencia de plataformas de hardware cada vez más baratas. Esta constituye a su vez una de las más palpables ventajas de este esquema, la posibilidaddeutilizarmáquinasconsiderablementemásbaratas que las requeridas por una solución centralizada, basada en sistemas grandes. Además, se pueden utilizar componentes, tanto de hardware como de software, de varios fabricantes, lo cual contribuye considerablemente a la reducción de costos y favorece la flexibilidad en la implantación y actualización de soluciones.
  • 30. Sistemas Distribuidos 30 b) El esquema Cliente/Servidor facilita la integración entre sistemas diferentes y comparte información permitiendo, por ejemplo que las máquinas ya existentes puedan ser utilizadas pero con interfaces más amigables al usuario. De esta manera, podemos integrar PCs con sistemas medianos y grandes, sin necesidad de que todos tengan que utilizar el mismo sistema operacional. c) Al favorecer el uso de interfaces gráficas interactivas, los sistemas construidos bajo este esquema tienen mayorinteracción más intuitiva con el usuario. El uso de interfaces gráficas para el usuario, el esquema Cliente/Servidorpresentalaventaja,conrespectoaunocentralizado,deque no es siempre necesario transmitir información gráfica por la red pues esta puede residir en el cliente, lo cual permite aprovechar mejor el ancho de banda de la red. d) Una ventaja adicional del uso del esquema Cliente/Servidor es que es más rápido el mantenimiento y el desarrollo de aplicaciones, pues se pueden emplear las herramientas existentes (por ejemplo los servidores de SQL o las herramientas de más bajo nivel como los sockets o el RPC). e) La estructura inherentemente modular facilita además la integración de nuevas tecnologías y el crecimiento de la infraestructura computacional, favoreciendo así la escalabilidad de las soluciones. f) El esquema Cliente/Servidor contribuye además, a proporcionar, a los diferentes departamentos de una organización, soluciones locales, pero permitiendo la integración de la información relevante a nivel global. El esquema Cliente/Servidor tiene algunos inconvenientes que se mencionan a continuación: a) Tiene escasas herramientas para la administración y ajuste del desempeño de los sistemas. b) En el desarrollo de aplicaciones Cliente/Servidor se deben considerar los aspectos, que se mencionan a continuación: o Los clientes y los servidores deberán utilizar el mismo mecanismo (por ejemplo sockets o RPC), lo cual implica que se deben tener mecanismos generales que existan en diferentes plataformas. o Además, hay que tener estrategias pare el manejo de errores y para mantener la consistencia de los datos. La seguridad de un esquema Cliente/Servidor es muy importante. Por ejemplo, se deben hacer verificaciones en el cliente y en el servidor. También se puede recurrir a otras técnicas como el encripción.
  • 31. Sistemas Distribuidos 31 o El desempeño. Problemas de este estilo pueden presentarse por congestión en la red, dificultad de tráficode datos, etc. o Un aspecto directamente relacionado con lo anterior es el de cómo distribuir los datos en la red. En el caso de una organización, por ejemplo, éste puede ser hecho por departamentos, geográficamente, o de otras maneras. Hay que tener en cuenta que en algunos casos, por razones de confiabilidad o eficiencia, se pueden tener datos replicados, y que puede haber actualizaciones simultáneas. o A otro nivel, una de las decisiones que deben tomar las organizaciones es la de si comprar o desarrollar los diferentes componentes. Servicios basados en Cliente/Servidor IBM ha orientado sus esfuerzos de desarrollo de productos ha satisfacer los siguientes servicios: a) Servicios de Datos e Impresión: Servicios que permiten compartir archivos, bases de datos, impresoras y graficadores (plotters). Administración de las colas de impresión en diferentes dispositivos. b) ServiciosdeComunicaciones:Aseguranquecadacomponentefísicodelared sea capaz de comunicarse exitosamente con otros componentes, tales como LAN a LAN y LAN a WAN. El sistema puede incluir dispositivos de comunicaciones que manejen diferentes tipos de protocolos para conectar sistemas heterogéneos. c) Servicio de Administración: Administración de Sistemas involucra administración de cambios, de problemas, operaciones, configuración y rendimiento. Administración de Cambios: es definida como las actividades involucradas en la planeación, programación, distribución, instalación y registro de hardware y software en una red distribuida. Administración de Problemas: involucra la determinación de los mismos, la identificación de su origen en una red y su solución. Administración de Operaciones: es definida como la administración del uso de los sistemas y de los recursos para soportar la carga de trabajo de la organización, la cual incluye operaciones automatizadas y remotas. Administración de Configuración: es el manejo de las relaciones lógicas y físicas entre los recursos de la red.
  • 32. Sistemas Distribuidos 32 Administración del Rendimiento: es un conjunto de actividades tales como la recopilación de datos de desempeño, afinamiento, distribución de carga de trabajo y el planeamiento de la capacidad para las redes distribuidas. Administración de Sistemas: también incluye servicios de respaldo, recuperación de datos, seguridad de recursos de cómputo y distribución y mantenimiento de software. d) Servicios de Aplicación: Si el recurso compartido es una parte de una aplicación (una función de la aplicación), estamos hablando de servicios de aplicación. Cada uno de los procesadores participantes en un ambiente Cliente/Servidor puede mantener parte del código de la aplicación, el cual debeser compartidoportodosellos(interoperabilidad).Estosignificaquelas partes de una aplicación pueden ser distribuidas en varios procesadores, locales o remotos. El diseño de las funciones de la aplicación no debe estar ligado a un computador, lo que permite transportar la aplicación de un procesador a otro, sin modificaciones (portabilidad). Una ventaja derivada de esto, es que la aplicación puede estar óptimamente ubicada dentro de una red en base a las necesidades: de recursos de cómputo y de la organización. Programación porcapas La programación por capas es un estilo de programación en el que el objetivo primordial es la separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en separar la capa de datos de la capa de presentación al usuario.
  • 33. Sistemas Distribuidos 33 La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, sólo se ataca al nivel requerido sin tener que revisar entre códigomezclado. Un buen ejemplode este método de programación sería el modelo de interconexión de sistemas abiertos. Además, permite distribuir el trabajo de creación de una aplicación por niveles; de este modo, cada grupo de trabajo está totalmente abstraído del resto de niveles, de forma que basta con conocer la API que existe entre niveles. En el diseño de sistemas informáticos actual se suele usar las arquitecturas multinivel o Programación por capas. En dichas arquitecturas a cada nivel se le confía una misión simple, lo que permite el diseño de arquitecturas escalables (que pueden ampliarse con facilidad en caso de que las necesidades aumenten). El diseño más utilizado actualmente es el diseño en tres niveles (o en tres capas). Capas y niveles a) Capa de presentación: es la que ve el usuario (también se la denomina "capa de usuario"), presenta el sistema al usuario, le comunica la información y captura la información del usuario en un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). Esta capa se comunica únicamente con la capa de negocio. También es conocida como interfaz gráfica y debe tener la característica de ser "amigable" (entendible y fácil de usar) para el usuario. b) Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio (e incluso de lógica del negocio) porque es aquí donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los resultados,yconla capadedatos,para solicitaralgestordebase de datos
  • 34. Sistemas Distribuidos 34 para almacenar o recuperar datos de él. También se consideran aquí los programas de aplicación. c) Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos. Está formada por unoo más gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio. Todas estas capas pueden residir en un único ordenador, si bien lo más usual es que haya una multitud de ordenadores en donde reside la capa de presentación (son los clientes de la arquitectura cliente/servidor). Las capas de negocio y de datos pueden residir en el mismo ordenador, y si el crecimiento de las necesidades lo aconseja se pueden separar en dos o más ordenadores. Así, si el tamaño o complejidad de la base de datos aumenta, se puede separar en varios ordenadores los cuales recibirán las peticiones del ordenador en que resida la capa de negocio. Si, por el contrario, fuese la complejidad en la capa de negocio lo que obligase a la separación, esta capa de negocio podría residir en unoo más ordenadores que realizarían solicitudes a una única base de datos. En sistemas muy complejos se llega a tener una serie de ordenadores sobre los cuales corre la capa de negocio, y otra serie de ordenadores sobre los cuales corre la base de datos. Enunaarquitecturadetresniveles,los términos"capas"y "niveles" nosignifican lo mismo ni son similares. El término "capa" hace referencia a la forma como una solución es segmentada desde el punto de vista lógico: Presentación/ Lógica de Negocio/ Datos. En cambio, el término "nivel" corresponde a la forma en que las capas lógicas se encuentran distribuidas de forma física. Por ejemplo: o Una solución de tres capas (presentación, lógica del negocio, datos) que residen en un solo ordenador (Presentación+lógica+datos). Se dice que la arquitectura de la solución es de tres capas y un nivel. o Una solución de tres capas (presentación, lógica del negocio, datos) que residen en dos ordenadores (presentación+lógica, lógica+datos). Se dice que la arquitectura de la solución es de tres capas y dos niveles.