Está en la página 1de 20

INSTITUTO POLITECNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERÍA MECANICA Y ELÉCTRICA


UNIDAD CULHUCÁN

INGENIERÍA EN COMPUTACIÓN

Sistemas Distribuidos
Verónica Salas Jiménez

UNIDAD 2
Alumno:
Arroyo Rodríguez Moisés Isaí
Introducción a los sistemas de multiprocesamiento

Tradicionalmente, el computador se ha entendido como una máquina secuencial


que requiere que, aun cuando se utilizan técnicas como segmentación, el
procesador ejecute los programas procesando instrucciones máquina de una en
una. Sin embargo, esto no es así, un procesador super escalar posee varias
unidades de ejecución y puede aprovechar el paralelismo implícito entre
instrucciones para ejecutar en paralelo varias instrucciones del mismo programa.
Los procesadores paralelos son sistemas que interconectan varios procesadores
para cooperar en la ejecución de un programa con el fin de aumentar las
prestaciones y sacar más partido del paralelismo existente. Un sistema
multiprocesador saca partido del denominado paralelismo de alto nivel, por
contraposición a las técnicas ya estudiadas en temas anteriores, que utilizan el
paralelismo a bajo nivel en sistemas de un solo procesador, tales como cauces
segmentados o super escalares. En la actualidad se puede considerar que todas
las computadoras modernas son de hecho máquinas con múltiples procesadores.
De estos, los más comunes y útiles son los procesadores de los dispositivos de
almacenamiento, dispositivos multimedia y de video/sonido, así como periféricos
como el teclado y aparatos USB. Todos ellos son capaces de llevar a cabo
transferencias de datos entre sí o entre ellos y la memoria RAM sin intervención
alguna del procesador central, lo cual resulta en capacidad de procesamiento rápido
mejorada.

Pero cuando se habla de múltiples procesadores es más común el estarse refiriendo


a una máquina que posea más de un procesador central. A estas computadoras se
les llama Multi-core. El multiproceso es tradicionalmente conocido como el uso de
múltiples procesos concurrentes en un sistema en lugar de un único proceso en
un instante determinado. Como la multitarea que permite a múltiples procesos
compartir una única CPU, múltiples CPUs pueden ser utilizados para ejecutar
múltiples hilos dentro de un único proceso. Mientras que la multitarea es la
capacidad de un sistema operativo para ejecutar varios procesos al mismo tiempo
corriendo sobre un procesador o sobre varios. Las multitareas se dividen en nulas,
cooperativas, preferentes y reales. Podemos definir la programación multihebra o
multihilo como un estilo de ejecución en el que se conmuta entre distintas partes del
código de un mismo programa durante la ejecución. A cada una de estas partes
individuales y atómicas (no divisibles) se les da el nombre de Threads. Los threads-
traducidos como hilos, hebras o contextos de ejecución- son espacios de código
que la JVM ejecutará de forma simultánea en una maquina multiprocesador y de
forma conmutada en máquina de un solo procesador, este es, la ejecución de los
threads se realizará asignando un determinado quantum o espacio de tiempo a cada
uno de los threads.

Clasificación de los sistemas de multiprocesamiento

Las cuatro categorías definidas por Flynn (1972) se basan en el número de


instrucciones concurrentes y en los flujos de datos disponibles en la arquitectura:

• Una secuencia de instrucciones y una secuencia de datos (SISD: Single


Instruction, Single Data): Un único procesador interpreta una única secuencia
de instrucciones para procesar los datos almacenados en una única
memoria. No explota el paralelismo a nivel de instrucción. Máquinas
monoprocesador.
• Una secuencia de instrucciones y múltiples secuencias de datos (SIMD:
Single Instruction, Multiple Data): Una única instrucción controla de forma
simultánea y sincronizada un cierto número de elementos de proceso. Cada
elemento tiene una memoria asociada, de forma que cada elemento ejecuta
la misma instrucción con diferentes datos. Los procesadores vectoriales y
matriciales pertenecen a esta categoría.
• Múltiples secuencias de instrucciones y una secuencia de datos (MISD:
Multiple Instruction, Single Data): Se transmite una secuencia de datos a
varios procesadores, cada uno de los cuales ejecuta una instrucción diferente
sobre los mismos. Esta estructura nunca se ha implementado.
• Multiples secuencias de instrucciones y múltiples secuencias de datos
(MIMD: Multiple Instructions, Multiple data): Un conjunto de procesadores
ejecuta simultáneamente instrucciones diferentes sobre conjuntos de datos
diferentes. Es el caso de los sistemas distribuidos, bien explotando un único
espacio compartido de memoria, o bien uno distribuido.

Los computadores MIMD se subdividen según el mecanismo de comunicación


entre los procesadores. Si los procesadores comparten una memoria común,
cada procesador accede a programas y datos a través de dicha memoria común
compartida, que además se utiliza para la comunicación entre procesadores.

Los multiprocesadores son computadores que tienen memoria compartida y se


pueden clasificar en UMA (uniform memory access), NUMA (nonuniform
memory access) y COMA (cache only memory access).

UMA
En este tipo de arquitectura, como bien dice su nombre, todos los accesos a
memoria tardan el mismo tiempo. Seguramente podemos pensar que es difícil
que tengamos el mismo tiempo de acceso si la memoria, aunque compartida, está
dividida en módulos a los que se accede a través de una red de interconexión
basada en switches. Eso es cierto y, para conseguir esta uniformidad de acceso, se
tiene que aumentar el tiempo de los accesos más rápidos. Los sistemas NUMA
facilitan la programación, ya que el tiempo de acceso siempre es el mismo. Este tipo
de máquinas son fáciles de construir. Sin embargo, el hecho de que todos los
procesadores accedan al mismo bus para acceder a memoria puede significar un
cuello de botella. Una alternativa a tener un único bus sería tener varios buses, de
tal forma que se distribuirían los accesos a los módulos de memoria. También se
podría usar una red de interconexión más compleja, como una red crossbar, que
permita evitar conflictos entre los accesos a las memorias que no van al mismo
módulo.

La jerarquía de memoria ayuda a reducir la contención de acceso a memoria si se


explota la localidad de datos. Por otra parte, una forma de reducir la contención de
los accesos a memoria* es reduciendo la cantidad de estos accesos por parte de
los procesadores, y se puede conseguir incorporando jerarquías de memoria en los
mismos. De esta forma, si los programas explotan la localidad de datos, los accesos
a memoria se reducirán.

NUMA
En los multiprocesadores NUMA, a diferencia de los UMA, los accesos a memoria
pueden tener tiempos distintos. En estas máquinas la memoria también está
compartida, pero los módulos de memoria están distribuidos entre los diferentes
procesadores con el objetivo de reducir la contención de acceso a memoria.

El módulo de memoria que está junto a un procesador en un mismo nodo recibe el


nombre de memoria local a este procesador. Así, los accesos de un procesador a
su memoria local suelen ser mucho más rápidos que los accesos a la memoria local
de otro procesador (memoria remota). La figura 6 muestra un esquema básico de la
distribución de memoria en este tipo de multiprocesadores, donde se observa la
distribución de los módulos entre los diferentes nodos. Estos nodos tienen un bus
local para acceder a la memoria local, y se conectan a la red de interconexión para
acceder a la memoria situada en otros nodos. También observamos un hardware
llamado directorio que sirve para mantener la coherencia de los datos y que
explicaremos, más adelante, en el módulo. Las redes de interconexión típicas de
estos sistemas son las redes de tipo tree y las de bus jerárquico.

Mapeo de datos
El programador deberá ser consciente del mapeo de los datos para reducir el
número de accesos a la memoria local de otros procesadores.

Desde el punto de vista del programador, éste deberá ser consciente de la


arquitectura NUMA para poder acercar los datos a la memoria local del procesador
que tenga que operar con esos datos. De esta forma se podrán reducir los accesos
a memorias locales de otros procesadores (memorias remotas) y, como
consecuencia, se mejorará el tiempo de ejecución de la aplicación. Coherencia de
los datos Mantener la coherencia de los datos significa que el último valor de un
dato debe ser visto por todos los procesadores.

Por otra parte, al igual que pasaba con las arquitecturas UMA, también se
incorporaron las cachés para reducir la contención de memoria. Pero además, con
estas cachés también se intenta ocultar la diferencia de tiempo de acceso a
memoria entre memoria local y remota. Según tengan o no caché, los
multiprocesadores NUMA se clasifican en cache coherence NUMA (ccNUMA) o
Non-Coherence NUMA respectivamente. El término de coherencia o no coherencia
proviene de mantenerla o no en los datos duplicados en las cachés.

COMA
Aunque las arquitecturas ccNUMA ayudan a ocultar la diferencia de tiempo entre
accesos locales y remotos, esto dependerá de la localidad de datos que se explote
y la capacidad de las cachés. Así, en el caso de que el volumen de los datos a los
que se accede sea mayor que la capacidad de la caché, o el patrón de acceso no
ayude, volveremos a tener fallos de caché y el rendimiento de las aplicaciones no
será bueno. Arquitecturas COMA Las arquitecturas caches only memory access
tratan la memoria principal como una memoria caché grande. Las arquitecturas
COMA (cache only memory access) intentan solucionar este problema haciendo
que la memoria local a cada procesador se convierta en parte de una memoria
caché grande. En este tipo de arquitecturas, las páginas de memoria desaparecen
y todos los datos se tratan como líneas de caché.

Fuertemente acoplados

Los sistemas con múltiples procesadores pueden clasificarse según el


acoplamiento, que indica la capacidad de compartir recursos y la naturaleza de la
intercomunicación de los distintos procesadores, de la siguiente forma:
a) Sistemas débilmente acoplados
b) Sistemas fuertemente acoplados
c) Sistemas medianamente acoplados.
A los sistemas fuertemente acoplados se les conoce como sistemas
multiprocesadores, y todos los procesadores que lo forman pueden utilizar todos los
recursos del sistema.
Sus características más importantes son:
1) Memoria común.
a. Todos los procesadores del sistema pueden acceder a una memoria
principal común, aunque cada uno de ellos pueda también tener una
memoria de datos propia.
2) Entrada/Salida.
a. Todos los procesadores del sistema comparten el acceso a los
dispositivos de entrada/salida.
3) Sistema operativo común.
a. El sistema se controla mediante un sistema operativo, que regula las
interacciones entre procesadores y programas.
Los sistemas fuertemente acoplados deben disponer de un mecanismo de
sincronización entre procesadores. En general, todos los procesadores deben ser
iguales, formando así una configuración simétrica. En este tipo de sistemas es
posible que los procesadores originen conflictos en el acceso a memoria principal o
a los dispositivos I/O. Estos conflictos deben ser minimizados por el sistema
operativo y por la estructura de interconexión.

Débilmente acoplados

Son las redes de computadores y se configuran con varios computadores


convencionales que pueden intercomunicarse a grandes velocidades (típicamente
mediante Ethernet).

El reparto de trabajo entre los computadores de la red lo realiza un único sistema


operativo.
Las características más importantes de los sistemas débilmente acoplados son:

1) Computadores autónomos.
a. Los computadores son independientes y pueden estar
geográficamente dispersos.
2) Protocolo de comunicación.
a. La comunicación sigue un rígido protocolo.
3) Comunicación serie.
a. Utilizando líneas de alta velocidad.
4) Accesibilidad.
a. Desde cualquier computador se puede acceder a todos los demás.
5) Eficacia.
a. El funcionamiento resulta eficiente cuando las interacciones de los
procesos de los diferentes computadores son mínimas.

Sistemas medianamente acoplados

También denominados sistemas distribuidos, combinan las cualidades de los


sistemas fuerte y débilmente acoplados: Existe un mapa de memoria único y un sólo
sistema operativo, sirviendo la memoria como elemento de comunicación entre los
diferentes procesadores.

Sistemas de cluster

En informática, el término clúster (“grupo” o “racimo”) hace referencia a conjuntos o


conglomerados de computadoras construidos mediante el uso de hardware común
y que se comportan como si fueran una única computadora. El uso de los clústeres
varía desde las aplicaciones de supercómputo, servidores web y comercio
electrónico hasta el software de misiones críticas y bases de datos de alto
rendimiento. El cómputo con clústeres es el resultado de la convergencia de varias
tendencias tecnológicas actuales, entre las que se pueden destacar.

• Microprocesadores de alto rendimiento.


• Redes de alta velocidad.
• Software para cómputo distribuido de alto rendimiento.
• Crecientes necesidades de potencia computacional.

Los servicios esperados de un clúster principalmente son:

• Alto rendimiento.
• Alta disponibilidad.
• Escalabilidad.
• Balanceo de carga.

Típicamente respecto a la rapidez y disponibilidad, se espera que un clúster

sea más económico que el uso de computadoras individuales.

Un clúster puede ser:

• Homogéneo.
• Semi-homogéneo.
• Heterogéneo.
Un clúster es homogéneo cuando todas las computadoras tienen la misma
configuración en hardware y sistema operativo. Es semi-homogéneo cuando las
computadoras tienen diferente rendimiento, pero guardan una similitud con respecto
a su arquitectura y sistema operativo. Finalmente, un clúster es heterogéneo cuando
las computadoras tienen diferente hardware y sistema operativo.

Multiprocesamiento dedicado

En esta categoría cada procesador tiene su propia memoria. Si un procesador


requiere un dato que se encuentra en una localidad de memoria remota, debe
solicitarlo.

Multiprocesamiento compartido

Los procesos tienen acceso a la misma memoria física. Los procesos pueden correr
en un solo procesador (tiempo compartido). Los procesos pueden correr en
procesadores distintos dentro del mismo computador. Se debe tener cuidado en
esta categoría con la consistencia de los datos.
Se debe utilizar mecanismos como: semáforos, barreras, etc. para tal fin.
Protocolos de comunicación

La comunicación entre procesos se encuentra en el núcleo de todos los sistemas


distribuidos. No tiene sentido estudiar los sistemas distribuidos, sin examinar
cuidadosamente las formas en que los procesos desarrollados en diferentes
máquinas pueden intercambiar información. En los sistemas distribuidos, la
comunicación siempre se basa en el paso de mensajes de bajo nivel, tal como lo
ofrece la red subyacente. Expresar la comunicación a través del paso de mensajes,
es más difícil que utilizar primitivas basadas en memoria compartida, como se hace
en plataformas no distribuidas.

Protocolo en capas
Debido a la ausencia de memoria compartida en los sistemas distribuidos, toda la
comunicación se basa en el envío y la recepción (de bajo nivel) de mensajes.
Cuando el proceso A debe comunicarse con el proceso B, primero elabora un
mensaje en su propio espacio de dirección. Después ejecuta una llamada de
sistema y ocasiona que el sistema operativo envíe el mensaje sobre la red hacia B.
Aunque esta idea básica parece bastante sencilla, para evitar el caos, A y B deben
acordar el significado de los bits por enviar.

Para facilitar el manejo de varios niveles y cuestiones involucradas en la


comunicación, la International Standards Organization (ISO) desarrolló un modelo
de referencia que identifica claramente los diversos niveles involucrados, les
proporciona nombres estándar, y señala qué nivel debe hacer cuál trabajo. Este
modelo se conoce como el Modelo de Referencia de Interconexión de Sistemas
Abiertos (Day y Zimmerman, 1983), normalmente abreviado como ISO OSI o bien,
en ocasiones, sólo como el modelo OSI. Es necesario resaltar que los protocolos
desarrollados como parte del modelo OSI nunca se utilizaron ampliamente, y que
hoy en día están prácticamente muertos. Sin embargo, el modelo subyacente ha
mostrado ser muy útil para comprender las redes de computadoras.

Protocolos de bajo nivel


Iniciemos con la explicación de las tres capas más bajas de la suite de protocolos
de OSI. Juntas, estas capas implementan las funciones básicas que forman una red
de computadoras. La capa física se ocupa de transmitir ceros y unos. Cuántos volts
se utilizan para un 0 y cuántos para un 1, cuántos bits por segundo se pueden
enviar, y si la transmisión puede ocurrir simultáneamente en ambas direcciones, son
cuestiones clave de la capa física. Además, el tamaño y la forma del conector de
red (plug), así como el número de pins y el significado de cada pin, son importantes
aquí.

La capa de enlace de datos hace su trabajo, colocando un patrón especial de bits


al inicio y al final de cada trama para marcarlas, así como calculando una suma de
verificación en la que suma de cierta manera todos los bytes de la trama.

Para que un mensaje llegue del remitente al destinatario, es probable que deba
realizar una serie de saltos, y elegir en cada salto una línea de salida. La cuestión
de cómo elegir la mejor ruta se conoce como enrutamiento, y es básicamente la
tarea principal de la capa de red. El problema es complicado, debido a que la ruta
más corta no siempre resulta ser la mejor.

Protocolo de transporte
La capa de transporte forma la última parte de lo que podríamos llamar una pila
básica de protocolos de red en el sentido de que implementa todos aquellos
servicios no proporcionados en la interfaz de la capa de red, pero que son
razonablemente necesarios para construir aplicaciones de red. En otras palabras,
la capa de transporte transforma la red subyacente en algo que un desarrollador de
aplicaciones puede utilizar. Los paquetes pueden perderse en el camino del
remitente hacia el destinatario. Aunque algunas aplicaciones pueden manejar su
propia recuperación de errores, otras prefieren tener una conexión confiable. El
trabajo de la capa de transporte es proporcionar este servicio. La idea es que la
capa de aplicación debe poder entregar un mensaje a la capa de transporte con la
expectativa de que será entregado sin pérdidas. El protocolo de transporte de
internet es conocido como TCP (Protocolo para el Control de Transmisiones), y se
describe con detalle en Comer (2006). La combinación TCP-IP se utiliza ahora como
un estándar predeterminado para comunicación en red.

Protocolos de más alto nivel


Por encima de la capa de transporte, OSI diferenció tres capas adicionales. En la
práctica, únicamente la capa de aplicación se utiliza siempre. De hecho, en la suite
de protocolos de internet, lo que se encuentra por encima de la capa de transporte
se agrupa todo junto. De cara a los

sistemas middleware, en esta sección veremos que ni el enfoque OSI ni el de


internet son realmente adecuados. La capa de sesión es básicamente una versión
mejorada de la capa de transporte. La capa de sesión proporciona control de diálogo
para dar seguimiento a la parte que está comunicando en el momento, también
proporciona herramientas de sincronización. Lo que le falta a este modelo es una
clara diferencia entre aplicaciones, protocolos específicos de aplicaciones, y
protocolos de propósito general.

Protocolos middleware
El middleware es una aplicación que lógicamente reside (la mayor parte del tiempo)
en la capa de aplicación, pero que contiene muchos protocolos de propósito general
que garantizan sus propias capas, independientemente de otras aplicaciones más
específicas. Podemos establecer cierta diferencia entre los protocolos de
comunicación de alto nivel y los protocolos implementados para establecer diversos
servicios middleware.

Paso de mensajes

La unidad básica de flujo de información es el paquete que consta de la dirección


del nodo destino, el número de secuencia en el mensaje completo y los datos.
Muchos sistemas y aplicaciones distribuidos se construyen directamente sobre el
sencillo modelo orientado a mensajes ofrecido por la capa de transporte.

En ciencias de la computación, el paso de mensajes es un paradigma de


programación ampliamente usado en el software moderno. Sus aplicaciones cubren
un amplio campo, y puede usarse desde para garantizar que los diferentes objetos
que constituyen un programa informático puedan trabajar de forma coherente entre
ellos hasta para permitir que una tarea pueda ejecutarse de forma sincronizada
entre varios ordenadores. Es uno de los conceptos clave en modelos de
programación concurrente, programación distribuida y programación orientada a
objetos.

De forma abstracta, se llama mensaje a una porción de información que un proceso


emisor envía a un destinatario (El cual puede ser otro proceso, un actor o un objeto).
El modelo de paso de mensajes es el que define los métodos y funciones para poder
llevar a cabo el envío de un mensaje de un proceso emisor a un destinatario. Supone
un enfoque opuesto al paradigma tradicional en el cual los procesos, funciones y
subrutinas sólo podían ser llamados directamente a través de su nombre.

El paso de mensajes es una técnica que se usa para, desde un proceso, invocar de
forma abstracta un comportamiento concreto por parte de otro actor (Por ejemplo,
ejecutar una función o un programa). Esto supone un gran cambio con respecto al
modelo tradicional en el cual se llamaba a los programas y funciones solo por su
nombre, el paso de mensajes constituye un mecanismo esencial para distinguir una
función de su implementación interna— El emisor envía un mensaje solicitando una
acción abstracta al destinatario, y es el destinatario el que, al recibir el mensaje,
decidirá la acción que debe ejecutar para cumplir la petición.

Objetos remotos

Antes de la era de la programaci+on orientada a objetos, se creó RPC (Remote


Procedure Call) para invocar procedimientos cuya implementación se encuantra en
máquinas remotas.

Con la llegada de la Programación Orientada a Objetos se crean esquemas


análogos usando objetos. Es así como surge RMI y CORBA.

RMI es una tecnología desarrollada por Sun para permitir la colaboración de objetos
que están localizados remotamente. Esta tecnología se enmarca en la idea de
permitir colaboración entre Objetos Remotos. La idea no es que los objetos se
comuniquen a través de la programación del usuario de protocolos estándares de
red como TCP/IP. La idea es tener un objeto cliente, donde podamos efectuar un
requerimiento de datos. Ante una solicitud, el cliente prepara el requerimiento y lo
envía a un objeto ubicado en un servidor. El objeto remoto prepara la información
requerida (accediendo a bases de datos u otros objetos). Finalmente, el objeto
remoto envía la respuesta al cliente. En lo posible esta interacción debería ser lo
más semejante posible a requerimientos hechos localmente.

La idea suena simple, si tenemos acceso a objetos en otras máquinas, podemos


llamar a métodos de ese objeto remoto. RMI maneja los detalles para enviar los
parámetros, para activar el objeto remoto, invocar el método y retornar los valores
al llamador.

Procedimientos remotos

Un sistema de procedimientos remotos, RPC por sus siglas en inglés (Remote


Procedure Call) es una comunicación entre procesos que permite a un programa de
ordenador ejecutar una subrutina o proceso en un espacio de memoria diferenciado
(usualmente en otro equipo, aunque esto no es un requisito indispensable) sin que
el diseñador de esta subrutina tenga que preocuparse explícitamente de los detalles
de esta interacción remota, abstrayéndose de ella. Con el fin de conseguir que el
diseñador se despreocupe de las comunicaciones entre ambos equipos se diseña
un protocolo (llamado también RPC), que permite al usuario encapsular las
comunicaciones dentro de las RPC, suponiendo un gran avance frente a los sockets
usados previamente y que requerían una gran atención por parte del programador.
Veamos a continuación cómo funciona, de forma general, un sistema de
procedimientos remotos:

• El cliente inicia el proceso RPC enviando una petición a un servidor conocido,


en la petición le debe indicar al servidor qué procedimiento debe ejecutar y
suministrarle los parámetros necesarios (si se requieren).
• El servidor envía una respuesta al cliente y la aplicación continúa su
ejecución. En este punto hay múltiples variantes dependiendo del sistema
concreto de RPC que se utilice. Por norma general el cliente queda en un
estado de bloqueo (esperando a que termine la tarea en el servidor) hasta
que este le envíe la respuesta o buen se cumpla un tiempo máximo de espera
(timeout).

Una diferencia fundamental entre una llamada a procedimiento remoto una llamada
local es que la llamada a procedimiento remoto puede fallar debido a la red,
introduce un factor más que es, en principio, impredecible, luego deben implementar
mecanismos para tratar este tipo de complicaciones.

En la actualidad existen gran multitud de sistemas de procedimientos remotos, a


continuación, examinaremos algunos de los más populares y aquellos cuya
adopción se estudió y, posteriormente se desechó, para el desarrollo de este
proyecto. Se enumerarán sus características, fortalezas y debilidades, por último se
compararán con el candidato finalmente elegido que, como puede adivinar, será
xml-rpc.

CORBA
Corba son las siglas de Common Object Request Broker Architecture y es un
estándar que permite que software escrito en distintos lenguajes y ejecutándose en
distintas máquinas trabajen conjuntamente. Está muy orientado a objetos y se suele
emplear en entornos multicapa, también es usado por el proyecto Gnome para la
comunicación entre aplicaciones.
DCOM
DCOM son las siglas de Distributed Component Object Model, esta es una
tecnología propietaria de Microsoft que extiende los componentes de su tecnología
COM de manera que permite la ejecución de software distribuido en varios equipos
que se comunican entre sí. En el momento de su aparición DCOM supuso la
respuesta de Microsoft al estándar CORBA y se libró una batalla entre ambos para
ver cuál se establecía como el modelo de código y servicios sobre internet.
Finalmente, las dificultades que tenía el hacer que estas tecnologías funcionasen a
través de cortafuegos y/o en máquinas desconocidas propició que el conjunto de
peticiones http normales y navegadores web modernos le ganasen la partida de
popularidad, a pesar de esto tanto DCOM como CORBA siguen conservando un
nicho de mercado muy reseñable.
SOAP
SOAP, acrónimo de Simple Object Access Protocol es un protocolo estandarizado
por el World Wide Web Consortium (W3C) que define el intercambio de información
entre dos objetos por medio del uso de XML. Es un protocolo que surge como una
evolución de xml-rpc, al quedarse este protocolo corto para las necesidades de
grandes corporaciones. En un principio simplemente consistió en la adición de
algunos tipos de datos y espacios de nombres, una vez que el W3C aceptó el
estándar como propio el grupo de trabajo que se ocupa de él le ha ido añadiendo
características que no siempre han guardado una filosofía común (soporte de XML
schemas, tipos personalizados, permitir que algunos aspectos del estándar
dependan de la implementación de este, …). Una de las desventajas de los
protocolos basados en XML para el intercambio de información es la gran
sobrecarga de información que introduce este protocolo para el intercambio de
datos, es decir para enviar una unidad de información realmente útil el protocolo le
añade varias más para su propio uso. Esta última característica hace a este
protocolo bastante lento y requiere de un uso intensivo de las capacidades de red.

Referencias

Referencias
Tanenbaum, A. S. (2008). Sistemas distribuidos: Principios y paradigmas. Ciudad
de México: Pearson Education. Recuperado el 07 de Febrero de 2023

También podría gustarte