PROGRAMACIÓN DISTRIBUIDA

31
PROGRAMACIÓN DISTRIBUIDA 07/05/2022 By : Ing. Elías Cassal Baldiviezo

Transcript of PROGRAMACIÓN DISTRIBUIDA

Page 1: PROGRAMACIÓN DISTRIBUIDA

12/04/2023

PROGRAMACIÓN DISTRIBUIDA

By : Ing. Elías Cassal Baldiviezo

Page 2: PROGRAMACIÓN DISTRIBUIDA

ObjetivosEntender los conceptos básicos de

sistemas distribuidos y sus problemáticas.Conocer diferentes sistemas distribuidos

de mayor uso.Conocer los conceptos teóricos sobre

Programación Distribuida sus Ventajas y Desventajas.

El alumno debe alcanzar un conocimiento teórico de las distintas Tecnologías de la Programación en Red.

Page 3: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

CAPITULO I: Programación

distribuida. Introducción a Sistemas Distribuidos

Definiciones Sistema Distribuido La Programación Distribuida Como Paradigma Ejemplos Ventajas de distribuir sistemas Desventajas de distribuir sistemas

Implicaciones y Desafíos de distribuir sistemas Compartir Recursos Transparencia Usabilidad (abierto) Escalabilidad

Tecnologías para la programación distribuida.

Page 4: PROGRAMACIÓN DISTRIBUIDA

BibliografíaA.Tanenbaum, M.Van Steen.

Distributed Systems, principles and paradigms. Ed. Prentice Hall, 2002.

G.Coulouris, J.Dillmore, T.Kindberg. Distributed Systems - Concept and Design. Addison-Wesley, Third Edition, 2001.

Page 5: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

Webgrafiahttp://dmi.uib.es/~bbuades/sistdistr/sld00

1.htmhttp://dis.um.es/~jbermudez/dad/transpar

encias/T1%20-%20Introduccion.pdfhttp://www.infor.uva.es/~cllamas/sd/temas

PDF/Capitulo1.pdf

Page 6: PROGRAMACIÓN DISTRIBUIDA

Introducción

Page 7: PROGRAMACIÓN DISTRIBUIDA

Definiciones“Un Sistema Distribuido es una colección de

computadores independientes que aparecen ante los usuarios como un único sistema coherente.” (Andrew S. Tanenbaum)

“Un sistema en el cual tanto los componentes de hardware y software de un computador conectados en red se comunican y coordinan mediante paso de mensajes.” (G.Coulouris, J.Dollimore, T.Kindberg)

“Aquel que le impide a uno continuar su trabajo cuando falla un computador del cual uno nunca ha oído hablar.” (L.Lamport)

Page 8: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

Sistema distribuidoUn “Sistema Distribuido” se define

como una Colección de Computadores autónomos conectados por una red, y con el Software Distribuido adecuado para que el sistema sea visto por los usuarios como una única entidad capaz de proporcionar facilidades de computación.

Page 9: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

Programación Distribuidacomo Paradigma

Paradigma de programación enfocado en desarrollar sistemas distribuidos,

abiertos, escalables, transparentes y tolerantes a fallos.

Resultado natural del uso de las computadoras y las redes.

Casi cualquier lenguaje de programación que tenga acceso al máximo al hardware del sistema puede manejar la programación distribuida,

La programación distribuida típicamente cae en alguna de las varias arquitecturas básicas o arquitecturas: cliente-servidor, 3-tier, n-tier, objetos distribuidos, entre otras.

Page 10: PROGRAMACIÓN DISTRIBUIDA

Ejemplos de sistemas distribuidos

Red de estaciones de trabajo en una Universidad Espacio cuenta es visible desde todos los

computadores

Workflow de manejo automático de órdenes Usado por múltiples usuarios, el flujo de las órdenes

es transparente para ellos

Page 11: PROGRAMACIÓN DISTRIBUIDA

Ejemplos de sistemas distribuidos

World Wide Web (WWW) Aparece antes los usuarios como un repositorio

gigantesco de documentos

Factura electrónica en Chile Muchos contribuyentes y compradores Un ente centralizado (SII) Back-office distribuido

Page 12: PROGRAMACIÓN DISTRIBUIDA

Ventajas de distribuir sistemasEconomía Aumento en capacidad de procesamiento.Aplicaciones inherentemente distribuidas.Capacidad de crecimiento.Fiabilidad y disponibilidad.Compartir recursos y datos.

Page 13: PROGRAMACIÓN DISTRIBUIDA

Desventajas de distribuir sistemas

Aumento de la complejidad Costos de administración

Fallas más frecuentes Red, Latencia, pérdida de mensajes

Interoperabilidad Falta de estándares únicos

Seguridad

Page 14: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

IMPLICACIONES Y DESAFIOS

Page 15: PROGRAMACIÓN DISTRIBUIDA

Implicancias de distribuir los sistemas

Concurrencia. Recursos compartidos. Acceso concurrente. Sincronización.

Sin tiempo global. Cada computador tiene su propio reloj local. Coordinación.

Fallas independientes. Posibilidad permanente de fallas en cada

componente. Detección de fallas y tolerancia.

Page 16: PROGRAMACIÓN DISTRIBUIDA

Desafíos de los Sistemas Distribuidos

Compartir Recursos

Transparencia

Usabilidad (abierto)

Escalabilidad

Page 17: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

Tecnologías de Programación Distribuida

Page 18: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Es una arquitectura basada en el principio clásico de divide y vencerás, donde el procesamiento se fracciona entre dos entidades fundamentales denominadas cliente y servidor.

CLIENTEX% Proceso

SERVIDORY% Proceso

X + Y = 100%Generalmente Y>X

Page 19: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Clientes inteligentesX% Procesamiento

Servidor(es)Y% Procesamiento

X + Y = 100%

Page 20: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Surge en la década de los 80 como respuesta a la evolución del hardware en términos de redes, planteando un modelo versátil, modular basado en mensajes que permite incrementar la flexibilidad, la escalabilidad y la ínter-operación de los sistemas.

Page 21: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

El cliente se define como el PROCESO que requiere un servicio en particular

El servidor se define como el PROCESO que provee dicho servicio

Debido a que clientes y servidores son conceptos a nivel software y no hardware, una misma máquina puede actuar como cliente y servidor al mismo tiempo.

Page 22: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDORVENTAJAS

Aprovecha mejor el ancho de bandaAprovecha en mayor medida el hardwareMayor seguridad y autonomíaMejor manejo de la concurrenciaPermite que los clientes trabajen GUI

mientras el servidor se centra en los procesos centrales

Page 23: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Algunos ejemplos: Servidor Web (Apache, IIS) Cliente Web (IExplorer, Google CRHOME, Mozilla)

Cliente WEB

Servidor WEB

Protocolo

Page 24: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Servidor FTP (SFTP) Cliente FTP (Cute FTP, WS FTP)

Cliente FTP

Servidor FTP

Protocolo

Page 25: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Servidor IRC (IRC Server) Cliente IRC (Mirc, Pirch)

Cliente IRC

Servidor IRC

Protocolo

Page 26: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Servidor de Bases de datos (Interbase, Oracle, SyBase, MySql, SQL Server, Postgress) Cliente de Base de Datos (IBManager,IBConsole, propia aplicación)

Cliente Interbase

Servidor InterBase

Protocolo

Page 27: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

Interacción de clientes y servidores

Servidor DB (InterBase)

Servidor WEB (Apache)

Servidor de Aplicaciones (PHP)

Clien

tes

WEB

Servidor de DB(MySQL)

Cliente Interbase (IBmanager)

Cliente Win32 (SkyCell)

Page 28: PROGRAMACIÓN DISTRIBUIDA

ARQUITECTURA CLIENTE SERVIDOR

CLIENTE SERVIDOR DE 3 CAPAS (Multicapa)

Ejemplo: GoogleMillones de clientes (5’000.000 por día, 57 por segundo aprox.)

Servidor de indexación

Servidor de documentos

Servidor de balance

Page 29: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

TECNOLOGÍASCapitulo I- Arquitecturas de componentes. Server-Side./ Server-side

component architectures 2.1- Necesidad de arquitecturas de componentes server-side 2.2- Soluciones para arquitecturas de componentes server-side.

Herramientas 2.3- Java: un lenguaje ideal para las arquitecturas de componentes 2.4- Arquitecturas multicapa 2.5- Soluciones para arquitecturas server-side 2.6- J2EE

Capítulo 3- Servicios Middleware en J2EE 3.1- RMI (Remote Method Invocation) 3.2- JNDI (Java Naming and Diretory Interface) 3.3- Enterprise Java Beans 3.3-1. Introducción /Tipos 3.3-2. Session Beans 3.3-3. Entity Beans 3.4- Seguridad en EJB(con JBOSS)

Page 30: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

TECNOLOGÍASCapítulo 4- Client-Server CORBA Style 4.1- Objectos distribuidos CORBA 4.2- OMG's OMA (Object Management Architecture) 4.3- Corba 2.0 4.4- CORBA services 4.5- CORBA facilities Capítulo 5- CORBA and C++ : Advanced Corba Programming with C++ 5.1- IOR, references and proxies. 5.2- OMG IDL 5.3- Client Side (proxies, referencias, paso de parámetros, etc.) 5.4- Server Side (implementación de servants) 5.5- Corba Services 5.5-1. Naming 5.5-2. Event 5.5-3. Balancer 5.5-4. IMR

Capítulo 6- .NET 6.1- Introducción 6.2- Arquitectura

Page 31: PROGRAMACIÓN DISTRIBUIDA

12/04/2023 By : Ing. Elías Cassal Baldiviezo

GlosarioUn paradigma de programación

representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene sus ventajas y sus inconvenientes. También hay situaciones donde un paradigma resulta más apropiado que otro. Imperativo o por procedimientos: Declarativo

Funcional Lógico

Orientado a objetos