Sistemi Distribuiti
Sistemi Distribuiti
Sistemi Distribuiti
dopo
le tecnologie pi adatte hai sistemi distribuiti sono quelle ad agenti
coordination-based
si estende su diverse macchine -
offre ad ogni applicazione la stessa interfaccia -
Soluzione tramite separazione -
Un sistema distribuito organizzato come middleware:
Gli strati del middleware permettono a componenti distribuiti autonomi di
interagire significativamente tra loro e nasconde le differenze di tecnologia,
struttura, comportamento...
Cos' un sistema distribuito:
dalla definizione sulle slide:
il concetto di user un po datato
Computazione e interazione, sono le dimensioni della computer science
Quando si lavora su sistemi distribuiti l'importanza dell'interazione diventa pi
evidente
Obbiettivi di un sistema distributo:
Una buona ragione per costruire in sistema distribuito per rendere le risorse
distribuite disponibili come se fossero un sistema unico
-Rendere risorse distribuite , o remote, disponibili per l'uso
Una buona ragione per costruire un sistema distribuito per rendere la
distribuzione fisica irrilevante dal punto di vista dell'utente. E' chiamata
TRASPARENZA.
-Nascondere dove non necessario la distribuzione delle risorse
Essenzialmente la propriet di poter lavorare con numero e tipo dei
componenti non stabilito a priori al tempo del design
-promuovere l'apertura
Un sistema pu scalare quando il numero di utenti o risorse aumenta, la
distribuzione geografica degli utenti e delle risorse si estende, si espande su
diversi domini amministrativa
-promuovere la scalabilit
TRASPARENZA
Trasparenza Descrizione
Accesso(Access) Nasconde la differenza nella rappresentazione dei dati e come sono accedute le risorse
Posizione(Location) Nasconde dove posizionata una risorsa
Migrazione(Migration) Nasconde che una risorsa pu spostarsi
Riposizionamento(Relocation) Nasconde il fatto che una risorsa pu essere spostata in un altro posto mentre la usa
Copia(Replication) Nasconde se la risorsa copiata
Concorrenza(Concurrency) Nasconde che la risorsa condivisa da diversi utente in concorrenza
Malfunzionamento(Failure) Nasconde la rottura e il ripristino di una risorsa
Nascondere la distribuzione pu non essere sempre la
scelta migliore, dipende dal sistema (esempio stampanti
in 2 uffici diversi, non so in quale ufficio ho stampato)
Si possono avere diversi gradi di trasparenza
Problemi per i sistemi aperti
Misura della facilit con cui poter far lavorare diversi componenti e sistemi tra loro basati su
uno stesso standard (WEB)
-Interoperabilit:
Misura quanto un applicazione pu essere spostata da un sistema ad un altro e continuare a
funzionare
-Portabilit:
Misura la facilit con cui si possono aggiungere nuovi componenti o funzionalit ad un
sistema distribuito esistente
-Estendibilit:
I componenti devono essere piccoli e facilmente modificabili, le specifiche interne devono essere
anche loro pulite.
Ci deve essere separazione tra meccanismi e politiche
Anche se un solo server un collo di bottiglia, potrebbe essere necessaria in caso
di problemi di sicurezza
-
Anche se una sola collezione di dati un collo di bottiglia, potrebbe essere
necessaria se la replicazione non sicura
-
A volte il miglior algoritmo da un punto di vista teorico potrebbe essere quello
centralizzato
-
Centralizzazione potrebbe essere necessaria:
Dovrebbe comunque essere evitata.
Scalabilit geografica:
In un singolo dominio, utenti e componenti potrebbero essere affidabili, ma la
fiducia non esce dal confine del dominio
In un sistema distribuito si diffonde spesso in pi domini
Nascondere le latenze di comunicazione ( comunicazioni asincrone) -
Distribuzione -
Replicazione -
Tecniche:
Computer scientist definition:
Un sistema distribuito un insieme di computer indipendenti che appaiono all'utente come un solo
sistema coerente
Computer engineer definition:
Un sistema distribuito un insieme di entit computazionali autonome che sono concepite come un un
unico sistema coerente dal suo ideatore.
Un sistema distribuito composto da un molteplicit di componenti: entit computazionali autonome ,
indipendenti ed eterogenee , senza assunzione sulla loro natura, struttura o comportamento individuale
I maggiori problemi sono la Collaborazione e l'Amalgamazione delle entit: devono lavorare insieme e
sembrare un sistema uniforme
I sistemi aperti sono inprevedibili quindi richiesto che ci
siano oggetti prevedibili, deve esserci qualcosa condiviso
tra il sistema e il potenziale componente. Ad esempio
regole strandard per la sintassi e la semantica.
Per specificare la sintassi si usano le interfacce, che
vengono specificate mediante l'uso di IDL (Interface
Definition Language)
Introduzione
marted 25 febbraio 2014
13:59
Sistemi Distribuiti Pagina 1
A volte il miglior algoritmo da un punto di vista teorico potrebbe essere quello
centralizzato
-
Dovrebbe comunque essere evitata.
I dati dovrebbero confluire da tutta la rete in un solo posto -
La rete sarebbe in sovraccarico -
Un problema di trasmissione pu causare problemi all'intero algoritmo -
Problemi degli algoritmi centralizzati:
la suddivisione di un algoritmo in pezzi, ogni macchina ne fa una certa parte -
Nessuna macchina ha conoscenza completa dello stato del sistema -
Rottura di una macchina non distrugge l'intero algoritmo -
Caratteristiche degli algoritmi decentralizzati:
La centralizzazione sempre un casino
Nascondere le latenze di comunicazione ( comunicazioni asincrone) -
Distribuzione -
Replicazione -
Tecniche:
Comunicazione asincrona:
Mando una richiesta, non aspetto che arrivi la risposta e proseguo con il mio
lavoro, se ricevo la risposta la gestisco
A volte pu non essere fattibile una richiesta asincrona. Per la navigazione
web ,si fa in modo che i browser eseguano il pi possibile tramite javascript
Distribuzione:
Spezzare in parti e spargerle per il sistema.
Replicazioni:
Quando c' un degrado di performance, la replica di un componente pu
incrementare la disponibilit e riducendo la latenza. Si copia da una location ad
un'altra pi vicina.
Una particolare replica il caching che a differenza della replicazione decisa
dal cliente della risorsa.
La replicazione pu portare a problemi di inconsistenza , tecnicamente
inevitabile , il punto quanta inconsistenza intollerabile.
Insidie nei sistemi distribuiti:
La rete affidabile -
La rete sicura -
La rete omogenea -
La topologia non cambia -
La latenza 0 -
La banda infinita -
Il costo di trasporto 0 -
C' un amministratore -
Assunzioni False :
Di solito queste assunzioni producono tutti i problemi dell'ingegneria dei sistemi distribuiti
Affidabilit della rete -
Sicurezza della rete -
Eterogeneit della rete -
Topologia della rete -
Latenza -
Larghezza di banda -
Costo di trasporto -
Domini amministrativi -
Bisogna affrontare queste tematiche:
In un sistema non-distribuito non emergono.
Sistemi di computazione distribuiti -
Sistemi di informazione distribuiti -
Sistemi pervasivi distribuiti -
Tipi di sistemi distribuiti:
Sistemi di Calcolo distribuiti:
La necessit di potenza di calcolo non soddisfatta dalla potenza fornita dai singoli componenti.
Si pensa quindi a mettere insieme pi calcolatori.
A cluster: -
una collezione di macchine simili tra loro, con lo stesso OS, nella stessa zona, interconnesse
da LAN ad alta velocit.
Le motivazioni principali sono che: costava meno mettere insieme pi computer meno
potenti che comprarne uno pi potente; e era robusto, con facile mantenimento e
miglioramento.
L'uso principale la computazione parallela, tipicamente un solo programma a
computazione elevata caricato su tutte le macchine
E' omogeneo
A griglia -
Un sistema a griglia tipicamente eterogeno.
Risorse da differenti organizzazioni sono portate insieme per promuovere la collaborazione
fra individui gruppi e istituzioni, oltrepassando le barriere di organizzazione.
E' costruita mediante organizzazioni virtuali.
Ha a che fare con diversi domini amministrativi.
Esistono diversi strati: Fabric, Connectivity, Resource, Collective, Application
Sono due tipi:
Sistemi di informazione distribuiti: (meglio il suicidio all'inizio)
Svariati server non-interoperanti condivisi da un certo numero di
clienti. (Transaction Processing System):
-
Operazioni sui database sono transazioni, in un database distribuiti
anche la transazione dovrebbe esserlo.
Servono delle primitive.(BEGIN_TRANSCATION,
END_TRANSCATION,ABORT TRANSCATION,READ, WRITE)
Si usano transazioni nested: dovrebbero essere interamente ACID.
Si pu lavorare su una copia e se una subtransazione fallisce tutte
le altre devono essere considerate come tali. Se tutto va a buon
fine si fa il commit
Svariate applicazioni sofisticate devono comunicare tra loro.
(Enterprise Application Integration):
-
Non solo un problema di accesso a database distribuiti, deve
avvenire anche a livello applicativo. Integrazione dei processi oltre
che dei dati
Le applicazioni dovrebbe interagire tra loro significativamente.
Il middleware come facilitatore di comunicazione.
Nasce dai database, pi applicazioni di rete separate da integrare,
problemi strutturali di interoperabilit.
Sistemi distribuiti pervasivi:
(dispositivi mobili con batterie e sporadiche assenze di segnale)
parte di quello che ci circonda.
Generalmente ha poco controllo amministrativo umano.
Devono abbracciare il cambiamento nel contesto(devono essere felici dei cambiamenti nel
contesto)(il contesto la parte del mondo che interessa a me, al mio sistema)
-
Incoraggiare composizioni ad-hoc -
La condivisione base -
Requisiti:
Sistemi casalinghi: dovrebbero essere auto-configuranti e auto-manutenuti, alle persone non sono
richieste competenze di amministrazione di rete o di sistema
Sistemi costruiti attorno alle informazioni personali: un enorme quantitativo di dati eterogenei devono
essere gestiti, provenienti da sorgenti eterogenee fuori e dentro il sistema. (forno che sapendo le ricette
tipiche controlla gli ingredienti nel frigo e ti avverte se manca qualcosa)
Sensori per la salute
Sistemi Distribuiti Pagina 2
Sensori per la salute
Reti di Sensori
Sistemi Distribuiti Pagina 3
Architetture software: sono i modi di organizzare i componenti di un sistema distribuito
Componenti -
Modo di interconnessione dei componenti -
I dati che passano tra i componenti -
Il modo in cui queste cose sono configurate insieme -
Uno stile di architettura formulato in termini di:
Questa definizione permette di suddividere e classificare i sistemi, di compararli e fornisce una guida di design.
Un componente un unit modulare con una interfaccia ben definita, sostituibile nel suo ambiente.
l'interfaccia sia richiesta che fornita, ovvero cosa il componente pu chiedere al sistema, e cosa il sistema pu chiedere
al componente.
Un connettore una qualunque cosa che fornisce meccanismi di interazione tra componenti
A seconda dei componenti e dei connettori possiamo fare una prima divisione di stili
Architettura a layer: un layer pu comunicare solo con i layer vicini. chiamare il livello sotto, e essere chiamati da
quelli sopra.
-
Architettura basata sugli oggetti: il componenti sono oggetti, che comunicano tra loro via RPC. E' il tipico modo in
cui sono costruite le architetture client-server. ( pi diffuso oggi, ma non per i sistemi progettati per il futuro).
-
Architetture centrare sui dati: la comunicazione tra i processi avviene attraverso un repository condiviso, che pu
essere attivo o passivo; dipendono dalla scelta fatta nel repository: come sono rappresentati i dati, come sono
gestiti gli eventi, come risponde alle interazioni, come i processi interagiscono con e mediante la repository.
-
Architettura basata sugli eventi: i processi comunicano tramite l'event bus, attraverso il quale si propagano gli
eventi, non necessitano di conoscersi tra loro, e non devono condividere uno spazio comune per poter comunicare
-
Architettura a data-space condivisoIl problema che a volte l'attesa non pu essere troppo elevata. Si deve
scaricare il carico.: unione di data-centric e event-base. La shared repository sia un data-space persistente che un
bus eventi, dove i dati sono salvati e accessibili insieme agli eventi legati.
-
Esistono principalmente 4 stili architetturali:
Architetture di Sistema:E' come sono sparsi i componenti del sistema effettivamente.
Architetture centralizzate:
Client Server:
Connectionless: ok per le operazioni idempotenti ( eseguibili pi di una volta senza danno) -
Connection oriented: meno efficiente ma assicura affidabilit. -
In un architettura centralizzata il client richiede servizi al server. I due componenti sono divisi ovviamente in client e
server, e un componente pu essere sia client che server.
Application Layering:
User interface level: interfaccia utente -
Processing level: contiene le logiche di controllo, il nucleo dell'applicazione -
Data level: gestice i dati che interessano all'applicazione -
La suddivisione logica nelle architetture client server:
L'organizzazione logica non fisica, client e server potrebbero essere distribuiti come nello stesso computer.
Two-tiered:
Organizzazione in 2 tipi di macchine: client e server che si divino l'applicazione ( vedi cap. 2 slide 30)
Three-tiered:
Architetture software
marted 18 marzo 2014
14:22
Sistemi Distribuiti Pagina 4
Three-tiered:
Organizzazione in 3 tipi: i server suddivisi in sotto server: application server e database server.
Architetture decentralizzate:
Distribuzione verticale: divisione in tear come visto sopra. -
Distribuzione orizzontale: quando la distribuzione fisica dei client e dei server importante. I client
e i server potrebbero essere divisi in parti logicamente equivalenti, ognuna che si occupa di una
sua porzione dei dati(peer to peer)
-
Architetture Ibride:
Possono essere necessarie propriet di entrambi i sistemi, messe insieme sono dette architetture ibride
Collaborativa: (bittorrent)
Il sistema ha problemi a partire, si usa un interazione client-server , una volta instaurato il dialogo si usa
la logica peer-to-peer completamente decentralizzata
Architecture vs. Middleware
Il middleware non neutro, si porta dietro modelli, stili, astrazioni, componenti che influenzano il tipo di
sistema che si pu costruire attorno ad esso.
Sono le applicazioni a doversi adattare al middleware di solito, non il contrario, in quanto molto
pervasivo.
Quando si sceglie il middleware si cerca qualcosa che abbia tutti le astrazioni richieste.
Se il mio middleware comprende svariate volte il pattern interceptor, molto flessibile.
Adapting middleware
Una soluzione fissa pu fallire di fronte a cambiamenti imprevisti.
Creare un sistema adattativo pi facile a dirsi che a farsi.
Separazione delle preoccupazioni:
separazione di funzionale da non-funzionale, queste ultime(comprendenti affidabilit,
performance, sicurezza) vanno gestite separatamente. Aspect-oriented programming.
-
Riflessione computazionale: -
La capacit di controllare se stessi ed eventualmente di auto-adattare il comportamento, cuore
dei moderni linguaggi di programmazione. Il programma osserva lo stato di se stesso, e basandosi
sull'ambiente circostante si pu auto-adattare
Design a componenti:
i comportamenti sono aggiunti "al volo", grazie all'apertura dell'architettura, tramite componenti
-
Tre tecniche base:
Self-managment
Automatic Adaption:
l'imprevedibilit dei cambiamenti rende l'adattamento guidato fallimentare, dovrebbero essere in grado
di rilevare cambi (rilevanti) nell'ambiente e di conseguenza cambiare, adattarsi.
l'adattamento deriva dal un sorta di loop feedback
Sistemi Distribuiti Pagina 5
Un architettura software un astrazione degli elementi di run-time di un sistema software durante alcune fasi delle sue
operazioni. Un sistema pu essere composto da diversi livelli di astrazione e diverse fasi di operazione, ognuna ha una
propria architettura software .
Un architettura software definita dalla configurazione di elementi architetturali (Componenti,connettori,data) ,
vincolati nelle loro relazioni in modo da raggiungere certe propriet architetturali.
Componente: unit astratta di istruzioni software e stato interno, che fornisce una trasformazione di dati
attraverso la sua interfaccia.
-
Connettore: meccanismo astratto che fa da mediatore tra i componenti -
Data: un informazione che trasferita da o a un componente tramite un connettore. -
Uno stile architetturale un set coordinato di vincoli architetturali, che presi insieme mi danno una restrizione su come
gli elementi possono essere organizzati tra loro.
Nel web non c' controllo sulla scalabilit da parte di un singolo
Il cambiamento del web incrementale, disordinato
ReST(Representational State Transfer)
Si inizia dal cosidetto "Null Style", punto di partenza concettuale, senza nessun vincolo. Essi vengono aggiunti
successivamente.
Principio: separazione delle preoccupazioni ( tra interfaccia utente e dati)
Vincolo: un server offre servizi e ascolta per questi, un client che vuole un servizio manda una
richiesta al server tramite un connettore, il server o esaudisce la richiesta e restituisce un risultato
oppure la rifiuta.
Propriet:
migliora la portabilit dell'interfaccia utente tra varie piattaforme,
migliora la scalabilit semplificando il componente server,
permette l'evoluzione indipendente dei componenti
Client Server: -
Vincolo:Ogni richiesta da parte dell'utente deve contenere tutti i dati interessanti per la
compressione della richiesta, non si deve fare affidamento su dati del server.
Properties:
- migliora la visibilit permettendo di determinare la natura della richiesta, senza guardare oltre
- migliora l'affidabilit, facilitando il recupero da fallimenti parziali
- migliora la scalabilit, permettendo ai server di rilasciare velocemente le risorse
- migliora la semplicit perch il server non deve gestire risorse tra le richieste
- peggiora la performance di rete, a causa dell'overhead in caso di richiesta multiple consecutive
- riduce il controllo del server
Stateless: -
Vincoli: i dati in una risposta, possono essere esplicitati o meno come inseribili in cache, se in
cache il client pu riusare la copia salvata in caso di una richiesta uguale futura
Propriet:
migliora efficienza scalabilit e performance percepita, riducendo la latenza
diminuisce l'affidabilit se i dati in cache sono molto diversi da quelli che restituirebbe il server
Cache: -
Vincoli:
Architetture del Web
venerd 21 marzo 2014
15:04
Sistemi Distribuiti Pagina 6
diminuisce l'affidabilit se i dati in cache sono molto diversi da quelli che restituirebbe il server
Principio di generalit
Vincoli: Identificazione delle risorse, un tipo di interazione uniforme, messaggi auto descrittivi,
hypermedia come motore di stato dell'applicazione.
Propriet:
Semplificazione di tutto il sistema,
migliora la visibilit delle interazioni,
incoraggio l'evoluzione indipendente disaccoppiando l'implementazione dal servizio.
degrado di efficienza a causa del trasferimento di informazioni in modo standardizzato (general
purpose ) anziche specifico e personalizzato
Interfaccia Uniforme: -
Vincolo: composizione dell'architettura in modo gerarchico costringendo i componenti a certi
comportamenti (tipo non vedere gli strati sotto di lui)
Migliora la semplicit e promuove l'indipendenza restringendo le conoscenze ad un solo layer,
migliora la scalabilit permettendo load balancing dei servizi agli intermediari,
migliora la sicurezza attraverso policy tra i livelli.
Riduce le performance percepite dall'utente a causa dell'aumento dell'overhead
Sistema a strati: -
Vincolo: Le funzionalit del client possono essere estese scaricando ed eseguendo
codice(Javascript).
Codice on Demand: -
L'architettura Representational State Transfer (ReST) uno stile archietturale, quindi un astrazione degli
elementi archietturali per il web, i dettagli sono tralasciati in quanto astrazione.
Il ruolo dei componenti -
I vincoli sull'interazione dei componenti -
L'interpretazione da parte dei componenti di dati significativi -
Ci concentriamo su:
I componenti ReST comunicano trasferendo una rappresentazione di una risorsa tramite uno standard
evolvente, selezionato dinamicamente basandosi sulle capacit e i desideri del ricevente e la natura delle
risorse. Anche se la rappresentazione comunque nel formato della sorgente, o in un suo derivato,
rimane nascosta dall'interfaccia del componente.
(un documento, un immagine, un oggetto temporale (il meteo di oggi in una citt italiana), una
collezione di risorse, un oggetto non virtuale).
Risorsa:
L'astrazione principale la risorsa, una qualunque informazione che pu essere nominata ed
abbastanza importante da poter essere riferita come una cosa in se
Una risorsa un mapping concettuale ad un insieme di entit, non ad un entit specifica che rappresenta
il mapping in un determinato momento.
Le entit possono essere: resource representations, resource identifiers.
Una risorsa pu essere mappata anche prima che essa esista, un concetto prima della sua realizzazione.
Una risorsa pu essere statica ( quando analizzata in un qualunque momento dopo la sua creazione
sempre la stessa) o dinamica ( altrimenti)
Fornisce generalit comprendendo pi sorgenti di informazioni. -
Permette il late binding del riferimento alla rappresentazione. -
Permette un autore di referenziare il concetto invece che una specifica rappresentazione di esso -
La definizione astratta delle risorse permette alcune delle caratteristiche chiave del web:
Ogni risorsa deve avere un identificatore in forma di URI( nome e indirizzo della risorsa). Le uri
dovrebbero avere una struttura, che dovrebbe variare prevedibilmente. Una risorsa pu avere pi URI,
ma un URI punta sempre ad una sola risorsa. Un URI e la sua risorsa dovrebbero avere una
corrispondenza intuitiva.
Sistemi Distribuiti Pagina 7
Rappresentazione:
Una rappresentazione una sequenza di byte, pi metadati di rappresentazione che descrivono quei
byte. I metadati di rappresentazione in forma di coppie nome-valore, dove il nome corrisponde ad uno
standard che definisce la struttura e la semantica del valore
Media Types:
Il formato dei dati di una rappresentazione. Pu impattare direttamente le performance percepite
dall'utente, ogni dato in pi aggiunge latenza
Connector:
Forniscono una generica interfaccia per l'accesso e la manipolazione al set di valori di una risorsa,
incapsulano le attivit delle risorse di accesso e di trasferimento
(Client Server, Resolver, Tunnel, Cache)
Components:
Origin server, Gateway, proxy, user agent
Sistemi Distribuiti Pagina 8
Comportamento non bloccante
! Una chiamata di sistema bloccante pu essere eseguita senza che si blocchi l'intera
applicazione
-
Sfruttare il parallelismo
! Un unit multi-processore pu essere sfruttata al meglio
-
Sfruttare la comunicazione tramite spazio di dati condiviso in grandi applicazioni
! Un applicazione multi-thread pi veloce a switchare di una multi processo
-
Espressivit della potenza dell'ingegneria del software
! Un applicazione multi-thread modella un applicazione concorrente cooperativa facilmente
-
Threads Benefits:
Tuttavia, i processi nei sistemi distribuiti sono veramente concorrenti, e l'accoppiamento nei sistemi
distribuiti pi complicato.
Virtualizzazione:
Ogni risorsa pu essere condivisa e vista come virtuale.
Questo migliora il porting del software Legacy, il quale cambia pi lentamente dell'hardware su cui
gira; migliora il porting su rete, in quanto piattaforme eterogenee sono interconnesse e fanno girare
applicazioni diverse; un server pu essere replicato dove e quando si vuole
Code Migration:
A volte per ragioni di sicurezza, scalabilit, load balancing non solo i dati devono essere trasferiti,
ma anche il codice.
Solitamente si sposta con tutto il suo contesto, ovvero si muove tutto il processo.
Un processo si divide essenzialmente in 3 segmenti:
Code segment(il set di istruzioni del processo) , resource segment( il set di riferimenti alle risorse
esterne), execution segment(dove viene salvato lo stato di esecuzione del processo(private data,
stack , program counter)
Weak: dove solo il codice, e qualche dato di inizializzazione sono trasferiti; il codice pu quindi
essere eseguito ex-novo ovunque.
-
Strong: il code segment viene trasferito insieme all'execution segment; permettendo di
stoppare, spostare e fare ripartire il processo su un'altra macchina
-
Ci sono quindi diversi tipi di mobilit:
Per quanto riguarda il resource segment il discorso non semplice.
Esso si riferisce alle risorse tramite Id, valore o tipo.
Possiamo differenziare le risorse per il loro grado di mobilit: unattached, fastened, fixed. Le prime
due si possono spostare, ma le fastened (come un database locale) hanno un costo per il
trasferimento, le fixed non si possono spostare invece e di solito sono oggetti fisici.
Stabilire un riferimento a livello di sistema globale -
Spostare la risorsa -
Copiare il valore della risorsa -
Bindare il processo ad una risorsa disponibile localmente -
A seconda della combinazione del grado di mobilit e del metodo di referenziazione si possono
eseguire le seguenti operazioni:
Processi nei Sistemi Distribuiti
venerd 28 marzo 2014
15:42
Sistemi Distribuiti Pagina 9
E' importante vedere i sistemi dal punto di vista dell'interazione e della computazione.
Processi, thread, LWP sono rappresentazioni della parte computazionale.
I componenti di un sistema compongono un sistema solo se interagiscono tra loro.
La comunicazione una forma di interazione dove avviene uno scambio di informazioni. (non
tutte le interazioni sono comunicazioni)
Persistent Comunication: Un messaggio salvato dal middleware di comunicazione finch
non ricevuto. Non richiede la compresenza .
-
Transient communication: Un messaggio salvato dal midlleware finch client e server sono
attivi. Richiede la compresenza.
-
Asynchronous commnunicaton: E' tale se chi emette la comunicazione pu continuare
senza aspettare la risposta.(poco dettaglio) il messaggio dovrebbe essere salvato nel
middleware.
-
Synchronous communication: E' tale se chi emette la comunicazione aspetta una risposta,
o una conferma, o quando l'altro ha finito.
-
Tipi di comunicazioni:
Sono usate varie combinazioni di persistenza e sincronizzazione.
Message oriented transient comunication:
Messaggi inviati tramite un astrazione a canale, che connette due processi, deve esserci
compresenza tra sender e receiver(il tempo misurato in millisecondi).(esempio MPI, Berkley
Sockets)
Message Oriented persistent comunication (Message Oriented Middleware)
MOM fornisce un servizio di salvataggio messaggi, i quali sono messi in coda dal sender e
consegnati alla coda del receiver, il quale pu prendere il messaggio da questa coda , non
necessit di compresenza. (Esempio: IBM's WebSphere)
Uno stream trasmesso inviando sequenze di messaggi inerenti.
In caso di media continui (filmati) il tempo rilevante per comprendere il dati, in caso di media
discreti(immagini fisse) non rilevante.
La trasmissione asincrona usata per un immagine, i dati sono inviati in ordine senza altri vincoli.
La trasmissione sincrona usata per sensori pro-attivi, i dati sono inviati in ordine ma con un delay
massimo fissato.
La trasmissione isosincrona usata per i video, i dati sono inviati in ordine ma con delay minimo e
massimo fissati.
Comunicazione nei sistemi distribuiti
marted 1 aprile 2014
15:40
Sistemi Distribuiti Pagina 10
Il problema del naming:
Dare un nome alle entit computazionale.
Dato un nome trovare l'entit associata detto "name resolving"
C' una porzione del middleware detta naming system che si dedica alla risoluzione dei nomi (dato
un nome dice a cosa si riferisce).
E' un problema che si riscontra in generale nei sistemi computazionali, ma nei sistemi distribuiti pi
problematico.
Openness -
Location -
Mobility ( la relazione con la posizione non duratura o stabile) -
Distribution of the naming sytem -
Tutto ci a causa di:
Nome:
E' qualcosa che si riferisce ad un entit.(stringa, sequenza di simboli)
Definizione dell'insieme dei nomi ammissibili (definizione di una grammatica per i nomi)
(definizione intenzionale)
-
Definizione dell'insieme delle entit nominabili -
Definizione dell'associazione tra nome e entit (possibilmente in maniera formale) -
Definire un naming system consiste nella:
Entit:
Un entit qualcosa con cui puoi operare, accedendo tramite un "access point"
L'access point un entit particolare del sistema distribuito, usata per accedere ad un entit, come il
telefono per accedere a noi
Indirizzo:
Per accedere ad un entit tramite un access point serve un indirizzo, come il numero di telefono,
l'indirizzo dell'access point pu essere considerato per estensione l'indirizzo dell'entit.
Sono nomi di un qualche tipo, ma non vengono usati come nomi perch non semplici da elaborare
all'uomo
Identificatore:
un particolare tipo di nome, che si riferisce al massimo ad una entit, ed ogni entit riferita da
massimo un identificatore. Si riferisce sempre alla stessa entit, non mai risultato
Risoluzione di nomi:
Si possono usare tabelle con coppie (nome, indirizzo)
Flat Naming:
Il nome una sequenza piatta di caratteri/simboli.
Esempio: un messaggio con l'identificatore viene inviato a tutti e solo chi ha quella risorsa risponde,
poco efficiente con l'allargarsi delle risorse
Structured Naming:
Il nome composto da nomi comprensibili facilmente dall'uomo , come i nomi internet.
Name Space: organizzata in modo gerarchico, secondo un grafo, il naming graph. I nodi foglia sono
rappresentativi delle entit nominate, i nodi direttivi hanno un numero di uscite ognuna etichettata
con un identificatore
Naming nei sistemi distribuiti
marted 8 aprile 2014
14:35
Sistemi Distribuiti Pagina 11
Attribute based Naming:
Una collezione di <attributi,valori> associati ad un entit per descriverli. (come funzionano le pagine
gialle)
Sono conosciuti anche come "Directory services". Stanno dentro al middleware.
E' strutturato in moda da rispondere a query.
Sistemi Distribuiti Pagina 12
Adesso qua diverso da adesso l
Il sistema di eventi pu essere al pi parzialmente ordinato. Meglio non considerare l'ordine.
Nei sistemi distribuiti pu non esserci una nozione di tempo globale, bisogna vedere se possibile definirla
Tempo Fisico:
In un sistema centralizzato la nozione di tempo disambigua, in un sistema distribuito non c' una nozione naturale di tempo.
E' possibile crearla?? E' utile crearla??
Prendendo due clock teoricamente uguali essi in verit saranno diversi, dopo un certo tempo perderanno la sincronia, la
differenza di tempo tra i due detta "clock skew"
E' necessario per la sincronizzazione degli algoritmi.
Global absolute time:
fornito dal BHI di parigi, espresso in termini UTC, trasmesso come impulso ad onde corte ogni secondo UTC
ora si usa NTP(Network Time Protocol), il server ha l'absolute global time e le altre macchine devono sincronizzarsi
-
Global relative time:
a volte l'unica cosa necessaria un tempo condiviso, non assoluto, quindi algoritmi basati su server attivi, fanno polling su
altri server per capire il tempo medio
-
Esistono due approcci: global absolute time, global relative time.
Tempo Logico:
Come step successivo, possiamo osservare che spesso semplicemente necessario un clock condiviso, anche non relazionato al
tempo reale, quindi possibile e utile una nozione di tempo logico.
A volte non importante il tempo in cui avvien un azione ma l'ordine con cui vengono eseguite
La sincronizzazione di un clock logico sia ammissibile che utile.
Se a e b sono eventi nello stesso processo e a avviene prima di b allora sono ordinati dal tempo locale
Se un messaggio inviato da un processo con un evento 'a' e ricevuto da un processo con evento 'b', allora un
messaggio ci mette un tempo finito positivo e maggiore di 0 a propagarsi dal mandante al ricevente.