Repaso PC2
Repaso PC2
Wrapper, complejidad con N aplicaciones, bróker, complejidad con N, aplicación wrapper broker
Organización de Middleware:
Los wrappers: uso de delegado para construir un middleware.
problemas
Aplicaciones sueltas, ofrecen una interfaz que no se puede integrar con otra. La solución es
desarrollar una especie de envoltorios o wrappers.
Aplicación 1 y 2 se pueden comunicar gracias a los wraper, atraves de estas envolturas se puede
hacer para comunicar entre aplicaciones.
Otra forma es usando un bróker, donde los wrapers apuntan a una sola aplicación, en lugar de que
ellas se conecten entre si, se comunicaran por un Broker, si se quieren comunicar las aplicaciones
usaran el bróker.
Interceptores: El middleware contiene soluciones que son buenas para la mayoría de las aplicaciones
-> es posible que desee adaptar su comportamiento para aplicaciones específicas.
Interceptar el flujo habitual de control:
Interceptores: Permiten desarrollar un middleware adaptable, el middleware permite tener
interfaces similares para diferentes aplicaciones, si dos aplicaciones se comunican por middleware,
entonces la comunicación ente la aplicación y el middleware, se intercepta.
Hay algunas aplicaciones que necesitan un comportamiento especial, pa eso usamos
interceptores, si una aplicación se comunica con el middleware y si quiero adaptarlo, la
comunicación entre la aplicación y el middleware, se intercepta y luego se modifica.
Arquitectura de sistemas:
Arquitectura centralizadas: Modelo cliente-servidor básico.
Características:
Se tiene un servidor potente (mainframe) llamado terminal tonto, se accede a ellos a través de
terminales, físicos o lógicos, ese era una estación de trabajo, pero todo el proceso se hacía en el
servidor, luego salieron emuladores de terminal, por ellos se puede hacer un telnet y mostrara una
pantalla donde usaras el servidor. AS400 RS1000 todo esta en el servidor, una sola capa.
En empresas donde el numero de empleados es alto, 5000 empleados y se necesita 5000 destoks o
equipos, en total 25 000 000 millones de dólares, por ello, usan un esquema tipo mainframe, donde
tienen un disco y memoria pequeña, dando un espacio virtual, THIN CLIENT es similar al mainframe
Configuraciones tradicionales de dos niveles:
Comunicación, el cliente realiza una petición al servidor de aplicación que solicita la información
al servidor BD, se devuelve la información se espera la información se devuelve la respuesta,
todo esto es un tiempo de espera de respuesta.
Los nodos están organizados lógicamente en un anillo. Cada nodo tiene un identificador de
m bits
Cada item de datos se convierte en una clave de m bits
El item de datos con la clave k se almacena en el nodo con el identificador más pequeño
id>=k, llamado sucesor de la clave k.
El anillo se extiende con varios enlaces “atajos” a otros nodos.
ILUCTRACION: CHORD
- Considere la organización de varios nodos en un anillo lógico.
A cada nodo se le asigna un identificador aleatorio de m bits
A Cada entidad se le asigna una clave de m bits única.
La entidad con la clave k cae bajo la jurisdicción del nodo con el id mas pequeño id>= k
(llamado su sucesor succ(k))
NO SOLUCION: Deje que cada nodo realiza un seguimiento de su vecino y comience la búsqueda
lineal a lo largo del anillo.
NOTACION: Hablaremos del noso p ya que el nodo tiene el identificador p.
Chord finger tablets
Esencia: Cada nodo mantiene una lista ad hoc de vecinos. La superposición resultante se
asemeja a un grafico aleatorio: un borde (u.v) existe solo con una cierta probabilidad
P[(u,v)]
Búsqueda:
Inundación: el nodo emisor u pasa la solicitud de d a todos los vecinos. La solicitud se
ignora cuando el nodo receptor la ha visto antes. De lo contrario, v busca localmente d
(recursivamente). Puede estar limitado por un tiempo de vida: un número máximo de
saltos.
Random Walk: El nodo emisor u pasa la solicitud de d al vecino elegido al azar, v. Si v no
tiene d, reenvía la solicitud a uno de sus vecinos elegidos al azar, y así sucesivamente
Inundación:
Un archivo se divide en partes del mismo tamaño (normalmente cada una de de 256 KB)
Los pares intercambian bloques de piezas, normalmente unos 16 KB.
A puede cargar bloques d de la pieza D, solo si tiene la pieza D.
El vecino B pertenece al conjunto potencial PA de A, si B tiene un bloque que A necesita.
Si B pernete a PA y A pertenece PB: A y B están en una posición en la que pueden
intercambiar un bloque
Arquitectura de sistemas- Fases BitTorrent
Arquitecrua hibridas: Colaboración- BitTorrent bajo el capó.
Fase Bootstrap o fase arranque: A caba de recibir su primera pieza (a través de un desenganche
optimista: un nodo de NA proporciona desinteresadamente los bloques de una pieza para iniciar un
nodo recién llegado).
Fase de negociación: |PA| > o: siempre hay (en principio un par con quien A puede negociar).
Ultima fase de descarga:
|PA|= o: A depende de los compañeros recién llegados en NA para obtener las ultimas piezas
faltantes. NA solo puede cambiar a través del rastreador.
RESUMEN:
Los sistemas distribuidos se pueden organizar de muchas maneras. Podemos hacer una
distinción entre arquitectura de software y arquitectura de sistema. Este último considera
dónde se colocan los componentes que constituyen un sistema distribuido en las distintas
máquinas. El primero está más preocupado por la organización lógica del software: cómo
interactúan los componentes, de qué manera pueden estructurarse, cómo pueden hacerse
independientes, etc.
Una palabra clave cuando se habla de arquitecturas es el estilo arquitectónico. Un estilo refleja el
principio básico que se sigue al organizar la interacción entre los componentes de
software que comprenden un sistema distribuido. Los estilos importantes incluyen
basados en capas, estilos basados en objetos, estilos basados en recursos y estilos en los
que la gestión de eventos es prominente.
Hay muchas organizaciones diferentes de sistemas distribuidos. Una clase importante es
donde las máquinas se dividen en clientes y servidores. Un cliente envía una solicitud a un
servidor, que luego producirá un resultado que se devuelve al cliente. La arquitectura
cliente- servidor refleja la forma tradicional de modularizar el software en el que un
módulo llama a las funciones disponibles en otro módulo. Al colocar diferentes
componentes en diferentes máquinas, obtenemos una distribución física natural de las
funciones en una colección de máquinas.
Las arquitecturas cliente-servidor a menudo están altamente centralizadas. En las
arquitecturas descentralizadas, a menudo vemos un papel igual desempeñado por los
procesos que constituyen un sistema distribuido, también conocido como sistemas peer-
to-peer (punto a punto).
En los sistemas punto a punto, los procesos se organizan en una red superpuesta, que es
una red lógica en la que cada proceso tiene una lista local de otros pares con los que puede
comunicarse. La red superpuesta se puede estructurar, en cuyo caso se pueden
implementar esquemas deterministas para enrutar mensajes entre procesos.
En redes no estructuradas, la lista de pares es más o menos aleatoria, lo que implica que
los algoritmos de búsqueda deben implementarse para localizar datos u otros procesos.
En arquitecturas híbridas, se combinan elementos de organizaciones centralizadas y
descentralizadas. Un componente centralizado a menudo se usa para manejar solicitudes
iniciales, por ejemplo, para redirigir a un cliente a un servidor de réplica, que, a su vez,
puede ser parte de una red punto a punto, como es el caso de los sistemas basados en
BitTorrent.
SEMANA 7: APPINVENTOR
SEMANA 8:
Programacion de hilos:
1. Crear clase que implemente la interfaz runnable (método run).
2. Escribir el código de la tarea dentro del método run.
3. Instanciar la clase creada y almacenar la instancia en variable de tipo runnable
4. Crear instancia de la clase Thrread pasando como parámetro al constructor de Thread el
objeto runnable anterior
5. Poner en marcha el hilo de ejecución con el método Start() de la clase Theard
Arquitectura de un servidor multihilo:
Observaciones:
- Los hilos comparten el mismo espacio de direcciones. El cambio de contexto de un hilo
puede ser realizado completamente independiente del sistema operativo.
- El cambio de contexto de un proceso es generalmente (algo) más costoso ya que implica
poner el sistema operativo en el bucle, es decir, atrapar al kernel.
- Crear y destruir hilos es mucho más económico que hacerlo por procesos.
¿Para qué usar hilos?
Algunas razones simples
Evite el bloqueo innecesario: un proceso de un solo hilo se bloqueará al hacer E/S; en un proceso de
múltiples hilos, el sistema operativo puede cambiar la CPU a otro hilo en ese proceso.
Aprovechar el paralelismo: Los hilos de un proceso de múltiples hilos pueden ser planificados para
ejecutarse en paralelo en un procesador multiprocesador o multinúcleo.
Evitar el cambio de proceso: Estructurar aplicaciones grandes no como una colección de
procesos, sino a través de múltiples hilos.
Evitar los costosos cambios de contexto
ProcesoA ProcesoB
S3: Cambio del espacio
del kernel al
espacio del usuario
S1: Cambiar desde el espacio
de usuario al espacio
del kernel
Sistema Operativo
Compensaciones
(MRU LRU, antes del cambo de contexto, después del cambio de contexto, después el cambio de
contexto)
Beneficios:
Concurrencia vs paralelismo:
Ejecución concurrente en un sistema de un solo núcleo:
• Tipos de paralelismo
• Paralelismo de Datos – distribuye subconjuntos de los mismos datos en varios
núcleos, la misma operación en cada uno
• Paralelismo de tareas – distribución de hilos entre núcleos, cada hilo realiza una
operación única
- Paralelismo de datos y tareas:
Ley de Amdahl:
• Identifica las ganancias de rendimiento al agregar núcleos adicionales a una aplicación que
tiene componentes en serie y en paralelo
• S es la parte serial
• N núcleos de procesamiento
• Es decir, si la aplicación es 75% paralela / 25% serial, pasar de 1 a 2 núcleos da como
resultado una aceleración de 1,6 veces
• A medida que N se acerca al infinito, la aceleración se acerca a 1/S La parte en serie
de una aplicación tiene un efecto de proporcionado en el rendimiento obtenido al
agregar núcleos adicionales
• Pero, ¿la ley tiene en cuenta los sistemas multinúcleo
contemporáneos?
Hilos vs procesos:
HILOS:
HILOS (THREADS):
Aunque normalmente pensamos que un proceso tiene un único flujo de control, en los
sistemas modernos un proceso puede constar de varias unidades de ejecución, llamadas
hilos, cada una de las cuales se ejecuta en el contexto del proceso y comparte el mismo
código y datos globales. Los hilos son un modelo de programación cada vez más importante
debido al requisito de concurrencia en los servidores de red, porque es más fácil compartir
datos entre varios hilos que entre varios procesos, y porque los hilos suelen ser más
eficientes que los procesos. Los hilos múltiples (Multi-threading) también son una forma de
hacer que los programas se ejecuten más rápido cuando hay varios procesadores
disponibles
Los procesos definen un espacio de direcciones; los hilos comparten el espacio de
direcciones.
El bloque de control de proceso (PCB) contiene información específica del proceso.
Propietario PID, puntero al heap (monto), prioridad, hilo activo, y punteros a
la información del hilo.
El bloque de control del hilo (TCB-Thread Control Block) contiene información
específica del hilo
Puntero a la pila, PC, estado del hilo (ejecutando, …), valores del registro, un
puntero al PCB, …
Process0 Process1
SEMANA9:
Modelo DE red básico:
(application, presentation, sesión, trrnasporte, network, dtalink, physical, application protocol,
presentation protocol, sessionprotocol, transportprotocol,network protocol, darta, link protocol,
physical protocol)
Inconvenientes
- Enfocado sólo en el paso de mensajes
- Funcionalidad a menudo innecesaria o no deseada
- Viola la transparencia de acceso
Capas de nivel bajo:
Resumen
Capa física: contiene la especificación e implementación de bits, y su transmisión entre emisor y
receptor
Capa de enlace de datos: establece como norma la transmisión de una serie de bits en una trama
para permitir el control de errores y el control de flujo
Capa de red: describe cómo los paquetes en una red de computadoras deben ser enrutados
Observación
Para muchos sistemas distribuidos, la interfaz de nivel más bajo es la capa de red.
Capa de transporte:
Importante
La capa de transporte proporciona las facilidades de comunicación reales para la mayoría de los
sistemas distribuidos.
Protocolos estándar de Internet
TCP: comunicación orientada a la transmisión, confiable y orientada a la conexión
UDP: comunicación de datagramas no confiable (mejor esfuerzo)
Capa middleware:
Observación: El Middleware se inventa para proporcionar servicios comunes y protocolos
que pueden ser usador por diferentes aplicaciones
(application, aplication protocol hist-ti-host, protocol, physical, link level protocol hardware,
operating system)
Tipo de comunicacion:
(Synchronize at request submission, Synchronize at requesrrtdelivery, Synchronize at request
delivery, Synchronize at request submission, Synchronize after processing by server, Transmission
interrupt, Storage facility, server, client, request, time, reply
(Sincronizar en el envío de la solicitud, Sincronizar en la entrega de la solicitud, Sincronizar en la
entrega de la solicitud, Sincronizar en el envío de la solicitud, Sincronizar después del
procesamiento por el servidor, Interrupción de la transmisión, Instalación de almacenamiento,
servidor, cliente, solicitud, hora, respuesta)
sincronizar al enviar la solicitud
Lugares de sincronización
- En el envío de solicitud
- En la entrega de la solicitud
- Después del procesamiento de la solicitud
Cliente/Servidor:
Algunas observaciones
- La computación cliente / servidor se basa generalmente en un modelo de comunicación
transitoria y síncrona
- El cliente y el servidor deben estar activos en el momento de la comunicación.
- El cliente emite una solicitud y se bloquea hasta que recibe una respuesta
- El servidor esencialmente espera solo las solicitudes entrantes y, seguidamente las procesa
Inconvenientes de la comunicación síncrona
- El cliente no puede realizar ningún otro trabajo mientras espera la respuesta
- Las fallas deben manejarse de inmediato: el cliente está esperando
- El modelo puede simplemente no ser apropiado (correo, noticias)
Mensaje:
Middleware orientado a mensajes
Tiene como objetivo de alto nivel la comunicación asincrónica persistente: Los procesos se envían
mensajes entre sí, los cuales son encolados
El remitente no necesita esperar una respuesta inmediata, por tal motivo puede hacer otras
cosas
El middleware a menudo garantiza la tolerancia a fallas
Operación básica de RPC:
Observaciones
Client Callremote procedure Return from call Wait forresult Call local procedure and return results
Llamada del cliente Procedimiento remoto Regreso de la llamada Espere el resultado Llamada al
procedimiento local y devuelve los resultados request (solicitud) reply (respuesta) return
(fromcall).
1. El cliente llama al proceso. 6. El servidor hace una llamada local;
2. Stub crea el mensaje; llama al sistema devuelve el resultado al Stub.
operativo local. 7. Stub crea el mensaje; llama OS.
3. El sistema operativo envía un mensaje al 8. El sistema operativo envía un mensaje al
sistema operativo remoto. sistema operativo del cliente.
4. El sistema operativo remoto envía un 9. El sistema operativo del cliente envía un
mensaje al código auxiliar. mensaje al código auxiliar.
5. Stub descomprime los parámetros; servidor 10. Resultado de los desempaquetados del
de llamadas. stub del cliente; devuelve al cliente.
Llamada a doit(a,b), esta se hace y está en el proceso cliente, el resguardo del cliente, toma sus dos
parámetros y lo coloca en un mensaje como se ve (tanto a como b) . también el nombre o numero
de procedimiento, porque el servidor puede soportar varias llamadas, y tiene que identificarlas.
Cuando e mensaje llega al servidor, el resguardo lo examina, para ver que procedimiento se necesita
y regresar la llamada adecuada, los parámetros son variables inicializadas desde el menaje entrante,
mientras la maquina cliente y el servidor sean iguales, con parámetros de caracteres iguales, va a
funcionar correctamente. Sin son diferentes, se tomara de manera diferente el tipo de variable.
Algunas maquinas como Intel Pentium, numera bits de derecha a izquierda, mientras otros de
izquierda a derecha.
Las máquinas cliente y servidor pueden tener diferentes representaciones de datos (piense
en la forma de ordenar los bytes)
Envolver un parámetro significa transformar un valor en una secuencia de bytes
El cliente y el servidor deben acordar la misma codificación:
¿Cómo se representan los valores de datos básicos (enteros, flotantes, caracteres) ?
¿Cómo se representan los valores de datos complejos? (arreglos)
conclusión
- El cliente y el servidor necesitan interpretar correctamente los mensajes, transformándolos
en representaciones dependientes de la máquina.
conclusión
La transparencia de acceso total no se puede realizar.
El cliente realiza una solicitud de procedimiento remoto al servidor, el cual la recibe y envía la
aceptación de la solicitud al cliente, el cliente no tiene que esperar que el servidor mande respuesta.
Sin embargo, igual hay un tiempo, para que se retorne la respuesta, del servidor al cliente.
(Esquema: todo ese tiempo que estaba procesador, el cliente puede hacer otras cosas no se
bloquea.)
Pueden ser útiles cuando una respuesta esta por devolverse y el cliente no esta preparado, no hace
nada. RPCS asíncronos, el cliente primero llama al servidor y enrtraga una lista de maquinas y
continua el trabajo, la segunda llamada la hace normalmente, sin problemas, hay variables
asíncronas donde el cliente no espera al servidor, el problema, es que el cliente no sabrá si su
petición fue raceptada.
HTTP2: se envia y se manda, es bidireccional, es stream, fuertemente Tipado, para que vaya optimo
tiene que estar fuertemente TIPADO, comunicación RAPIDA, en cada librería.
Se basa en petición, en stream, muchos datos, un puerto y por ese se pasa todo.
Procolo bufer: copilo código de dirente lenguaje, en alguno el cliente lo llama stap , etc.
- S e quiere migrar a http2,el cliente no podrá ir al mismo paso, para ello esta el RPC gatway
que monta un proxy, hace un mirror del jason, habla entre el proxy, que esta solo en
lenguaje de Go.
Facilitar trabajo con socket: los socket son bastante bajos y los errores de programacion son
comunes, sin embargo la configuraciion que se sua es la misma.
(como en la configuraciond e cliente servidor)
Alternative:
Alternartive: ZeroMQ: Proporciona un mayor nivel de abstraccion al emparejar sockets: uno para
enviar mensajes en el proceso P y uno corespondiente en el proceso Q, para recibir mensajes.Toda la
comunciacion es asincrónica.
Tres patrones:
Request-reply.
Publish-subscribe
Pipeline
Ç
MPI (Message-Passing Interface): Cuando se necesita mucha
flexibilidad
Se usa cuando se requiere mucha flexibilidad
Operaciones representativas
Operation Description
MPI send Envía un mensaje y espera hasta que escopiado en un búfer local o remoto
INTRODUCCION A MPI:
- Message-passing interface (MPI) es una especificación estandar para una interfaz de paso
de mensajes
- MPI define la sintaxis y semántica de patrones de comunicación estándar
- Hay tres versiones de MPI
MPI-1 define las operaciones de comunicación estándar y se basa en un modelo
de proceso estático.
MPI-2 proporciona soporte para la gestión dinámica de procesos y E/S(entradas y salidas)
paralelas
MPI-3 proporciona operaciones colectivas sin bloqueo, entre otras características nuevas
Colección de procesos que intercambian procesos.
Un programa MPI es una colección de procesos que intercambian mensajes
Operación Descripción
Modelo general:
Administradores de Colas
Las colas son gestionadas por administradores de colas. Una aplicación puede colocar mensajes
sólo en una cola local. Es posible obtener un mensaje extrayéndolo de una cola local únicamente ⇒
los administradores de colas necesitan enrutar los mensajes.
Look up
contact address of
destination queue
manager
Dentro del OS del manejador de cola origen, va a buscar la dirección de contacto del manejador de
cola destino, luego se envia por la red, hasta la dirección del destino, donde ingresa al OS, llegando a
la dirección de nivel de cola lógica (nombre), con ellos llega al manejador de cola destino. Logical
queue-level
address
(name)
Address lookup
database
Source queue
manager
Contact
Message broker: Arquitectura general address
Network
Application
Broker plugins Rules
Interface Interface
Queuing
layer
Local OS Local OS Local OS