Estratto del documento

Sistemi distribuiti

Computazione

Computazione: sequenza di passi ben definiti che portano alla soluzione di un problema. Il problema deve essere definito in maniera esatta e senza ambiguità (è necessaria una codifica in simboli).

La computazione è composta da:

  • Input (informazioni di qualche tipo)
  • Output (informazioni di qualche tipo)
  • Contesto (è necessario quando: tempo, spazio, risorse o macchine computazionali sono rilevanti per la computazione)

Tipi di computazione

  • Temporale: quando il tempo è essenziale/rilevante per la computazione
  • Spaziale: quando le caratteristiche spaziali della macchina computazionale sono essenziali/rilevanti
  • Situata: quando l'ambiente (combinazione di caratteristiche spaziali e temporali insieme alle risorse necessarie) è essenziale/rilevante per la computazione

Per comprendere un processo computazionale è necessario fornire una precisa definizione del suo contesto.

Sistema computazionale

In un sistema computazionale, 2 o più processi computazionali computano e interagiscono.

Contesti separati o stesso contesto per tutti?

Il modo in cui scegliamo il contesto va a definire tipi di sistemi diversi:

Paralleli

  • Il contesto temporale è lo stesso per tutti i processi.
  • Più di una computazione nello stesso tempo.
  • Architetture multi-core.
  • Gli eventi sono totalmente ordinati.

Concorrenti

  • Il contesto temporale è diverso in almeno 2 processi.
  • Politiche di interleaving (le relazioni causali/temporali tra gli eventi dei processi non sono rilevanti) oppure true concurrency dove vengono utilizzate tecniche di partial ordering per gestire la relazione temporale/causale di eventi.
  • Gli eventi sono, al massimo, parzialmente ordinati.
  • La differenza tra concorrente e parallelo è relativa al contesto temporale.

Distribuiti

  • Il contesto spaziale è diverso in almeno 2 processi.
  • Computazione distribuita: tipicamente indica una computazione asincrona locata in dispositivi diversi che comunicano per mezzo di scambio di messaggi (no shared memory).
  • Sistemi distribuiti: insieme di dispositivi che lavorano insieme attraverso una connessione di rete.
  • Il punto principale è la distribuzione fisica e spaziale.

Sistemi distribuiti

Definizione (a posteriori) [Tanenbaum and van Steen, 2007]: Un insieme di computer indipendenti che appaiono all'utente come un singolo sistema coerente ("definizione del computer scientist").

Definizione (a priori): Un insieme di entità computazionali autonome pensate come un singolo sistema coerente dal progettista ("definizione del computer engineer").

Definizione [Coulouris et al., 2012]: Sistema in cui i componenti collegati alla rete comunicano e coordinano le loro azioni attraverso scambio di messaggi.

Punti chiave

  • (Dalle definizioni 1 e 2) Molteplicità dei componenti (nessuna definizione o assunzione sulla loro struttura, natura, comportamento...)
  • I sistemi distribuiti possono essere visti come singoli sistemi coerenti
  • (Dalla definizione 3) Distribuzione fisica
  • Interazione e coordinamento attraverso una network-based communication

Coerenza ed uniformità

Per poter lavorare come un singolo sistema coerente i vari componenti devono collaborare. Per raggiungere l'uniformità i componenti eterogenei devono amalgamarsi.

Obiettivi

  • Rendere disponibili risorse distribuite o remote
  • Nascondere la distribuzione delle risorse
  • Incentivare la openness
  • Incentivare la scalabilità
  • Rendere le risorse disponibili

Una risorsa è qualsiasi cosa che possa essere legata ad un sistema computazionale e che un utente potrebbe usare. (stampante, scanner, hard disk, sensori...) Le risorse distribuite devono essere viste come appartenenti ad un singolo sistema.

Distribution transparency

La distribuzione fisica deve essere irrilevante per l'utente. Per fornire all'utente un alto livello di astrazione, è spesso necessario nascondere proprietà e struttura dei componenti di un sistema (trasparenza).

Access transparency

I sistemi distribuiti sono formati da componenti eterogenei che richiedono modalità di 'accesso' differenti: rappresentazione differente dei dati, struttura dei componenti differente, protocollo di utilizzo delle risorse differente. Tutto questo deve essere nascosto dalla prospettiva dell'utente. Bisogna fornire un accesso omogeneo ai dati, componenti, risorse.

Location transparency

La distribuzione fisica delle risorse non è spesso rilevante per il loro utilizzo da parte dell'utente (e viceversa). I sistemi distribuiti devono nascondere la distribuzione fisica quando non rilevante. Per questo è necessario un sistema di identificatori non dipendente dalla posizione di una risorsa (e.g URL).

Migration transparency

Un sistema distribuito deve permettere (e nascondere) la mobilità delle risorse senza che queste perdano di coerenza e funzionalità. In pratica il sistema nasconde la posizione di una risorsa. Il fatto che anche gli utenti si muovono è un ulteriore parametro da considerare nella progettazione di un sistema.

Relocation transparency

Le risorse devono rimanere accessibili anche mentre si stanno spostando.

Replication transparency

Indica il nascondere il fatto che esistano repliche delle risorse. Le repliche sono molto utili per: far avere una copia locale di una risorsa all'utente in modo da consumare meno banda e velocizzare gli accessi, promuovere la tolleranza ai guasti attraverso la ridondanza. Tutte le repliche devono essere idealmente accessibili allo stesso modo, avere lo stesso nome ed essere nello stesso stato.

Concurrency transparency

Nascondere il fatto che le risorse sono in comune con più utenti. Due utenti potrebbero voler utilizzare la stessa risorsa nello stesso tempo ma questo non deve essere un problema. Il sistema deve gestire la concorrenza in maniera trasparente. In questo caso potrebbero esserci problemi di consistenza. Un sistema distribuito deve assicurare in maniera trasparente la validità delle risorse anche in caso di accessi concorrenti.

Failure transparency

Un sistema distribuito deve nascondere il failure e la successiva recovery di una risorsa. Non è facile capire quando qualcosa non funziona (potrebbe essere che una risorsa è solo molto lenta a rispondere ma non morta). La failure transparency porta latenza. Bisogna sfruttare la distribuzione per ridurre l'impatto dei failure sul sistema.

Gradi di trasparenza

In generale diciamo comunque che non è sempre necessario nascondere al massimo la distribuzione, che in alcuni casi deve essere percepita dall'utente. Bisogna trovare il giusto rapporto tra trasparenza ed informazione (tenendo conto di performance, scopo del sistema, comprensibilità...).

Openness

Proprietà di un sistema di poter lavorare con numeri e tipologie di componenti non predeterminati a livello di progettazione. I sistemi aperti sono anche impredicibili. Per gestire l'impredicibilità è necessario definire dei protocolli e interfacce per i componenti che potrebbero entrare nel sistema. Per le interfacce sono stati definiti dei IDL (Interface Definition Lenguages) che catturano la sintassi più che la semantica e spesso non specificano il protocollo.

Legati ai sistemi aperti si possono definire gradi di:

  • Interoperabilità: misura quanto è facile/difficile far lavorare un componente o un sistema con altri differenti basandosi su uno specifico standard
  • Portabilità: misura quanto un applicazione possa essere spostata in un sistema diverso e continuare a funzionare
  • Estensibilità: misura quanto è facile/difficile aggiungere nuovi componenti o funzionalità ad un sistema

Per gestire un sistema aperto non sono sufficienti interfacce esterne ma è anche necessario che:

  • I componenti siano piccoli e specifici in modo da essere facilmente rimpiazzati
  • Policies e mechanisms siano separati

I mechanisms sono i mattoni operativi. Devono essere neutrali e definiscono lo spazio di comportamenti possibili del sistema. Le policies sfruttano i mechanisms per implementare l'interazione tra componenti nel sistema. Definiscono lo spazio di comportamenti ammissibili.

La openness è essenziale per gestire l'impredicibilità degli ambienti complessi.

Scalabilità

Capacità di un sistema di scalare/aumentare di dimensione (numero di componenti o distribuzione geografica) in funzione della necessità. Si parla di scalabilità se per esempio aumenta il numero di utenti; la distribuzione geografica degli utenti si espande; il dominio applicativo diventa più esteso... La scalabilità permette ai sistemi di lavorare in ambienti a complessità crescente.

Centralizzazione

La centralizzazione (dei server, dei dati e degli algoritmi) ostacola la scalabilità ma potrebbe essere strettamente necessaria (per esempio in caso si voglia prediligere la sicurezza).

Scalabilità geografica

Limita l'aumento di dimensioni di un sistema: i sistemi distribuiti si estendono su più domini amministrativi e quindi è necessaria più sicurezza.

Latenza: La comunicazione WAN è spesso non affidabile.

3 soluzioni per la scalabilità

  • Hiding communication latency: Evitare di sprecare tempo aspettando risposte. Utilizzare il più possibile la comunicazione asincrona.
  • Distribuzione: Prendere un componente, dividerlo in varie parti e reinserirle nel sistema (e.g DNS).
  • Repliche: quando c'è un degrado delle performance, replicare i componenti nel sistema. Solitamente questo prevede di effettuare copie delle risorse in posizioni più vicine agli utenti. Caching è un particolare tipo di replicazione che viene "effettuata dal client della risorsa" (a differenza della replicazione che viene fatta dal proprietario della risorsa).

Situatedness

Proprietà di un sistema di essere immerso nel suo environment (ambiente, contesto); di essere capace di produrre e percepire cambiamenti nell'environment attraverso la gestione degli environment events. Ogni sistema non banale, oggi, deve sapere quando e dove sta lavorando per compiere la sua funzione (temporal e spatial context); deve conoscere la struttura, la natura e le risorse disponibili del suo ambiente di funzionamento. La situatedness è necessaria quando il problema richiede computazione situata in un ambiente fisico distribuito.

Knowledge-Intensive Environments (KIE)

???

Distributed Computing Systems

Utilizzare una molteplicità di computer distribuiti per task ad alte performance. Possono essere di 2 tipi:

Cluster

Insieme di PC o workstation simili (omogeneità) localizzati nello stesso luogo. Connessi attraverso LAN. L'idea è che è più conveniente mettere insieme tanti piccoli pc che averne uno molto potente. Sono più scalabili. Usati per: parallel computing.

Grid

Risorse di diverse organizzazioni riunite (eterogeneità). Si crea un 'organizzazione virtuale. Architettura a layer: Le parti principali sono connectivity, resource e collective che forniscono un accesso uniforme alle risorse.

Distributed Information Systems

Risolvono il problema di integrare diverse applicazioni differenti in rete (problemi strutturali di interoperabilità). 2 tipi:

Transaction Processing Systems

  • Vari server (non interoperanti) condivisi da più client. Le operazioni su un database distribuito devono essere transazioni distribuite con proprietà ACID:
    • Atomic: Gli step di una transazione sono invisibili all'esterno
    • Consistent: Non violano le invarianti
    • Isolated: Non influenzano altre transazioni
    • Durable: Dopo un commit, sono permanenti
  • Esistono delle primitive speciali (BEGIN, END, ABORT, READ, WRITE).
  • Nested transactions: una transazione di alto livello che richiede varie transazioni a basso livello (anche in database diversi). (PROBLEMA: non è facile mantenere l'ACIDità delle sottotransazioni. Infatti se una transazione fallisce, anche tutte le sotto-transazioni precedenti devono essere rollbackate). Una soluzione può essere di effettuare la transazione complessiva su una copia dei dati, e riportarla nel 'mondo vero' solo se ha totalmente successo.

Enterprise Application Integration (EAI)

Varie applicazioni che devono comunicare tra loro. Non riguardano solo database. IDEA: far comunicare le applicazioni attraverso un middleware che può supportare diversi meccanismi di comunicazione:

  • RPC Remote Procedure Call
  • RMI Remote Method Invocation
  • MOM Message-Oriented Middleware Publish/Subscribe

Distributed Pervasive Systems

Grande quantità di dispositivi connessi. Instabilità. 3 Requisiti:

  • Embrace contextual changes: il device deve sapere che l'environment può cambiare
  • Encourage ad hoc composition: device utilizzati in maniera diversa da diversi utenti
  • Recognize sharing as the default: le informazioni devono essere 'facili' da leggere, scrivere, gestire e condividere dai device.

Esempi:

  • Home systems
  • Health Care Systems (Body Area Network)
  • Sensor Networks (PROBLEMA: i device inviano solo dati o fanno anche computazione?) In questo caso una soluzione può essere creare una rete ad albero aggregando i risultati a diversi livelli.

Process Algebra

Processo: serie di azioni o eventi. Algebra: calcolo di simboli che si combinano secondo certe regole. Calcolo: sistema o metodo di conteggio.

Process Algebra -> tecnica di descrizione formale per sistemi complessi, in particolare concorrenti.

Operatori

  • : esecuzione di x oppure y
  • : esecuzione di x poi y
  • : esecuzione di x e y in parallelo

Ogni struttura matematica con questi 3 operatori è una process algebra (transition system).

Middleware

Middleware = ciò che sta tra sistema operativo e applicazioni.

Anteprima
Vedrai una selezione di 8 pagine su 31
Sistemi Distribuiti - Riassunti Pag. 1 Sistemi Distribuiti - Riassunti Pag. 2
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunti Pag. 6
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunti Pag. 11
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunti Pag. 16
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunti Pag. 21
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunti Pag. 26
Anteprima di 8 pagg. su 31.
Scarica il documento per vederlo tutto.
Sistemi Distribuiti - Riassunti Pag. 31
1 su 31
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher stefano.salvatori di informazioni apprese con la frequenza delle lezioni di Sistemi distribuiti e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Bologna o del prof Omicini Andrea.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community