Please enable JavaScript.
Coggle requires JavaScript to display documents.
Stili architetturali (Organizzare logicamente i diversi componenti e…
Stili architetturali
Organizzare logicamente i diversi componenti e distribuirli nei vari nodi
Stile a livelli è utilizzato nei sistemi client-server
Ogni livello offre delle API per la comunicazione (richiesta-risposta)
Stile ad oggetti è usato per i sistemi ad oggetti distribuiti
Ogni componente comunica direttamente con l'oggetto
Disaccoppiamento dei processi nello spazio e nel tempo abbiamo:
Protocollo publish/subscribe (disaccoppiamento nello spazio): un utente pubblica qualcosa in un bus. Gli ascoltatori che si iscrivono al canale possono leggere le informazioni
Protocollo Shared dataspace (disaccoppiamento nello spazio e nel tempo): bus più evoluto; le informazioni vengono memorizzate anche quando un utente non ascolta un canale. Quando l'utente ascolterà nuovamente il canale allora riceverà il messaggio
Architetture decentralizzate
Structured P2P: i nodi sono organizzati seguendo una struttura dati distribuita
Una possibile soluzione
Organizzare i nodi in una copertura strutturata di rete come un anello logico, e specificare le responsabilità dei nodi attraverso i loro ID
Il sistema fornisce un operazione di lookup dell'ID che, in maniera efficiente instraderà la richiesta al nodo interessato
Un'altra possibile soluzione
Organizzare i dati in una dimensione di spazio x e lasciar la responsabilità dei dati in una specifica regione. Quando un nodo si unisce allora si splitta la regione
Unstructured P2P: i nodi devono scegliere randomicamente i propri vicini
Molte di queste architetture tentano di formare un grafo randomico
Ogni nodo è necessario per contattare un altro nodo randomico
Ognuno di essi mantiene una parte della rete, ovvero un sottogruppo di nodi
Ogni nodo P periodicamente seziona un nodo Q dalla sua vista parziale della rete
P e Q si scambiano informazioni e si scambiano i membri dalle loro rispettive viste parziali della rete
Si mantiene sia la causalità che la robustezza della rete
Superpeer: nodi che svolgono funzionali particolari, quali il mantenimento degli indici di ricerca, monitoring della rete, configurazione della rete
Hybrid P2P: combinano le caratteristiche del modello client server con quelle p2p
Una volta che un nodo ha identificato da dove scaricare un file, si unisce ad un gruppo di downloader che in parallelo ottengono blocchi di file dalla sorgente e possono distribuire i pezzi scaricati tra loro
Architetture centralizzate
Modello client server di base
Diversi server che offrono servizi
Diversi client che utilizzano i servizi
I client ed i server possono essere in differenti macchine
I client seguono il modello di richiesta/risposta per usare i servizi
Modello client server a tre livelli (usato nei tradizionali sistemi informativi distribuiti)
Composta da:
Interfaccia utente
Livello di proccessamento: contiene le funzioni di un'applicazione
Livello dati che contiene i dati che un client vuole manipolare
Diversi modi di distribuzione del carico
Mettere sul server il DB, l'applicazione e parte di user interface
Mettere sul server il DB e l'applicazione mentre l'interfaccia va sul client
Mettere sul server il DB, mezza applicazione sul server e mezza nel client, e l'interfaccia utente sul client
Mettere sul client l'applicazione e la user interface sul client mentre il DB sul server
Mettere l'interfaccia utente, l'applicazione e metà parte del DB sul client
Architetture vs Middleware
Problema: non è sempre ottimale utilizzare sistemi/applicazione che sono state sviluppate seguendo uno stile architetturale. E' necessario adattare il comportamento del middleware
Solulzione: intercettare un usuale flusso di controllo quando invochiamo un oggetto remoto, attraverso gli interceptors
Middleware adattivo
Separazione degli interessi: provare a separare le funzionalità extra e successivamente unirle insieme in una singola implementazione
Reflection: lasciare un programma che si auto ispezioni a runtime per adattare o cambiare le impostazioni dinamicamente
Progettazione basata su componenti: organizzare un'applicazione distribuita attraverso componenti che possono essere dinamicamente sostituiti quando necessario