CdL MAGISTRALE in INFORMATICA A.A. 2015-16 corso di Sistemi Distribuiti 8. Le architetture (prima parte) Prof. S.Pizzutilo
I Sistemi Distribuiti Un Sistema Distribuito è un insieme di processori indipendenti (con proprie risorse HW/SW) interconnessi da una rete di comunicazione, che cooperano per condividere alcune delle risorse ovunque distribuite. Architettura di un Sistema Distribuito = numero, tipo ed interazioni delle componenti (software/hardware) del sistema.! Stili Architetturali della interazione tra componenti! Architetture di sistema! Tipi di Sistemi Distribuiti
Stili architetturali dei sistemi distribuiti Organizzazione della interazione tra le diverse componenti sofware e loro posizionamento sui sistemi hardware, in modo da garantire l indipendenza, ma anche l adattabilità, tra le applicazioni e le piattaforme sottostanti. î A LIVELLI req î CENTRATE SUI DATI process Componenti strato 3 Componenti strato 2 Componenti strato 1 Il necessario loosely coupling dei componenti in termini spaziali (componenti anonimi) e temporali (asincronia) : rep repository dati î BASATE SUGLI EVENTI process process Resource sharing Componenti = Oggetti Publish publish process î BASATE SU OGGETTI object process subscribe RMI process publish object object methods Event bus Publish/Subscribe methods object
Architetture di sistema Centralizzate ü Client- server sincrono ed asincrono ü Stratificazione delle applicazioni ed architetture multilayered Decentralizzate ü Distribuzione verticale ed orizzontale ü Architetture peer to peer strutturate e non strutturate Ibride ü Sistemi edge-server ü Sistemi distribuiti collaborativi
Architettura centralizzata a livelli Livelli logici di un sistema distribuito: logica di presentazione ( P) logica applicativa (A) logica di accesso ai dati (D) Livelli hardware (tier) su cui poggiano i livelli logici (layer): Ø single tiered system: tutti e tre i livelli logici poggiano su un unico livello hardware (configurazione classica dei terminali) (non è client/server) Ø Two tiered system : i livelli logici vengono divisi tra una macchina di front-end (client) ed una di back-end (server). Sulla prima macchina è realizzato il livello di presentazione e sul server il livello applicativo e di accesso ai dati. Ø Three tiered system: i tre livelli sono divisi in tre livelli fisici diversi (macchine). Una macchina client, una macchina mid-range server (con middleware) ed una macchina di back-end server. fat client thin client
Configurazione Two-tiered 1-29
Configurazione Multi-tiered 1-30
Un esempio : il WEB The general organization of an Internet search engine into three different layers 1-28
Architetture decentralizzate Sistemi Peer-to-Peer (o P2P) = un insieme di nodi indipendenti ed autonomi con equivalenti capacità (peer) che possono fungere sia da client che da server (servent) verso altri nodi della rete. Esempi classici di applicazioni P2P sono le reti per la condivisione di file sharing (Gnutella, BitTorrent, emule, ) oppure nella telefonia Skype, oppure per l elaborazione distribuita SETI@home, BOINC,... Rete overlay strutturata = Rete virtuale di peer nella quale ciascun nodo mantiene un set di link agli altri nodi (i suoi vicini). PROBLEMA : localizzazione dei PEER ( dei nodi, delle risorse) Rete overlay non strutturata, costruita in modo casuale la cui costruzione si basa su algoritmi random Nodi Superpeer Rete di nodi CDN (content delivery network) che mantengono un indice e quindi operano come intermediari Caratteristiche: Organizzazione dei processi in una rete overlay, costruita su base deterministica (DHT=distributed hash table). Gestione dell appartenenza e della topologia = Reti overlay semantiche
Nodi superpeer in una CDN Un WEB service provider ha due possibilità per distribuire i propri servizi WEB su scala geografica in modo efficiente e scalabile: Il provider possiede e gestisce l intera piattaforma (Sistemi Web distribuiti geograficamente), Il provider gestisce solo i contenuti/servizi ma delega ad una terza parte il servizio di delivery agli utenti (Content Delivery Network). Content Delivery Network (CDN) è un termine utilizzato per descrivere un sistema di computer collegati in rete (nodi), che collaborano in maniera trasparente per distribuire contenuti WEB agli utenti finali ed erogare servizi di streaming. L'obiettivo di una CDN è di instradare una richiesta di contenuto sul nodo che viene individuato come ottimale. Il nodo ottimale è quello che può soddisfare la richiesta nel minor tempo possibile.
Content Delivery Network Content Delivery Network (o Content Distribution Network): formata da un infrastruttura di server (detti content server, delivery server o edge server) che lavorano insieme, i content server della CDN sono distribuiti su una vasta area geografica per permettere la fornitura del contenuto Web da blocazioni più vicine all utente il content provider delega il servizio del contenuto del proprio sito Web (fornito dall origin server) ad una compagnia che gestisce una CDN (content outsourcing) i content server della CDN forniscono soltanto il contenuto dei siti Web gestiti dalla CDN Tratto da : Valeria Cardellini Università di Roma Tor Vergata Sistemi Web distribuiti geograficamente e sistemi per Web content delivery
Tratto da : Valeria Cardellini Università di Roma Tor Vergata Sistemi Web distribuiti geograficamente e sistemi per Web content delivery
Tratto da : Valeria Cardellini Università di Roma Tor Vergata Sistemi Web distribuiti geograficamente e sistemi per Web content delivery
Tratto da : Valeria Cardellini Università di Roma Tor Vergata Sistemi Web distribuiti geograficamente e sistemi per Web content delivery
Tratto da : Valeria Cardellini Università di Roma Tor Vergata Sistemi Web distribuiti geograficamente e sistemi per Web content delivery
Architetture ibride (client-server e decentralizzate) Ø Sistemi edge-server Sono sistemi posizionati ai bordi di una rete per interfacciare gli utenti esterni con i servizi interni di una organizzazione. Il ruolo di un edge server è quello di mediare le comunicazioni tra client e server, di autenticare i client e di autorizzare la loro richiesta di servizi WEB. Ø Sistemi distribuiti collaborativi Sistemi che si basano sulla capacità di svolgere attività collaborative per la fornitura di servizi ovunque distribuiti. Tali sistemi utilizzano uno schema tradizionale client-server per consentire ad un nodo di entrare nel sistema e schemi decentralizzati per la collaborazione tra i nodi già presenti nel sistema (es. BitTorrent, Globule, )
Edge server Sono insiemi di componenti web server/application_server per migliorare le performance dei sistemi web-based. Vengono usati efficacemente per realizzare funzionalità di forward o reverse proxy server. In genere sono composti di 4 componenti: 1. Network Dispatcher: per direzionare le richieste ad un server appropriato, dive sono presenti regole per il load balancing e/o il routing content-based. 2. Caching Proxy: può essere configurato come un forward o reverse-proxy server. I contenuti delle pagine richieste vengono cached dal sistema prima di essere spedite al richiedente. 3. Content Distribution: viene usato per sincronizzare un contenuto web statico su un certo numero di web server al momento delle pubblicazione. 4. Application Service per costruire pagine web dinamiche partendo da frammenti di pagine web generate da più application server.