Fondamenti dei Sistemi Distribuiti: Caratteristiche, Architetture e Progettazione

Classificato in Informatica

Scritto il in italiano con una dimensione di 14,17 KB

Sistema Distribuito

Si tratta di un sistema composto da elementi hardware e software che comunicano tra loro tramite messaggi, usando come mezzo di trasferimento una rete locale o remota.

Applicazioni Distribuite

Si tratta di componenti software che sono disponibili su computer diversi e anche con architetture diverse, e forniscono le interfacce necessarie all'utente per interagire con un sistema particolare.

Caratteristiche dei Sistemi Distribuiti

Le caratteristiche principali dei sistemi distribuiti sono:

  • Eterogeneità
  • Estensibilità
  • Sicurezza
  • Scalabilità
  • Trattamento dei Guasti
  • Concorrenza
  • Trasparenza

Eterogeneità

È la caratteristica che descrive la diversità dei componenti (sia hardware, software che di comunicazione) che possono essere implementati in un sistema distribuito.

Questa funzionalità si applica a:

  • Reti
  • Hardware dei computer
  • Sistemi operativi
  • Linguaggi di programmazione
  • Implementazioni da parte di sviluppatori differenti

Estensibilità

È la caratteristica che determina se il sistema distribuito può essere esteso in diversi modi. Il sistema può essere aperto o chiuso rispetto alle estensioni hardware o software.

Sicurezza

Questa ha la responsabilità generale della protezione dei dati, ma è divisa in tre componenti:

  • Riservatezza: protezione contro l'accesso da parte di individui non autorizzati.
  • Integrità: protezione contro l'alterazione o la corruzione dei dati.
  • Disponibilità: protezione contro le interferenze che impediscono l'accesso alle risorse.

Scalabilità

Questa funzione si concentra sull'efficacia o sulle prestazioni che un sistema distribuito può avere in caso di aumento del numero di risorse e/o del numero di utenti.

Aiuta a prevenire il sovraccarico delle risorse software.

Trattamento dei Guasti

Si riferisce a varie tecniche, algoritmi e/o procedure per rilevare e gestire i guasti. Alcuni di questi trattamenti sono:

  • Rilevamento dei guasti: (es. Checksum)
  • Mascheramento dei guasti: (es. Broadcast ridondanti)
  • Tolleranza ai guasti: (rendere i componenti tolleranti)
  • Failover: (es. Rollback, passaggio a replica)
  • Ridondanza: (uso di componenti ridondanti)

Concorrenza

Si riferisce alla possibilità di accesso concorrente o simultaneo ai servizi offerti da un sistema distribuito.

Trasparenza

Si concentra sul nascondere la complessità del funzionamento interno dei componenti di un sistema distribuito, facilitando l'accesso degli utenti, la gestione della concorrenza, delle repliche, ecc., senza esporre i dettagli implementativi.

Tipi di trasparenza:

  • Trasparenza di accesso
  • Trasparenza di locazione
  • Trasparenza di concorrenza
  • Trasparenza di replica
  • Trasparenza rispetto ai guasti
  • Trasparenza di mobilità
  • Trasparenza delle prestazioni
  • Trasparenza di scalabilità

Modelli Architettonici

I modelli architettonici si riferiscono alla disposizione o al posizionamento degli elementi di un sistema e alle relazioni tra i suoi componenti. I principali aspetti considerati sono:

  • Livelli software
  • Architetture di Sistema
  • Interfacce e Oggetti

Livelli Software

Riguardano la strutturazione del software in strati (layer) su un singolo computer o attraverso la rete.

I livelli sono costituiti da uno o più processi, situati sullo stesso computer o su computer diversi, che offrono e richiedono servizi.

Z

Piattaforma

Lo strato inferiore (hardware e sistema operativo) offre servizi agli strati superiori e la sua implementazione dipende da ogni computer.

Middleware

È uno strato software il cui scopo è mascherare l'eterogeneità e fornire un modello di programmazione pratico per gli sviluppatori di applicazioni distribuite.

Architetture di Sistema

  • Client-Server: Il server può o non può essere sullo stesso computer del client. Sia il server che il client possono essere processi concorrenti.
  • Servizi Forniti da Più Server: I server possono dividere l'insieme degli oggetti su cui si basa il servizio e distribuirli tra loro.
  • Proxy Server e Cache: Una cache è un repository di oggetti di dati utilizzati di recente, spesso gestita da un proxy server per migliorare le prestazioni e ridurre il carico sul server principale.
  • Processi Peer-to-Peer (P2P): Tutti i processi eseguono attività simili, interagendo in modo cooperativo come pari (peer) per realizzare un'attività o un calcolo distribuito, senza una distinzione netta tra client e server.

Interfacce e Oggetti

L'interfaccia di un processo è la specificazione dell'insieme di operazioni (metodi o funzioni) che possono essere invocate su di esso.

  • Nei linguaggi orientati agli oggetti, l'elaborazione distribuita può essere costruita in modo più orientato agli oggetti. I riferimenti a questi oggetti remoti possono essere passati ad altri processi, che possono accedere ai relativi metodi da remoto.
  • Questo è l'approccio adottato da tecnologie come CORBA e Java RMI.

Altri Modelli Architettonici

  • Codice Mobile: Il codice dell'applicazione viene spostato dinamicamente tra i nodi (es. Applet Java). A volte, questi frammenti di codice sono chiamati agenti.
  • Agenti Mobili: Un programma autonomo che si muove attraverso la rete da un computer all'altro, eseguendo un compito per conto di un utente o di un altro programma.
  • Network Computing: Viene scaricato da un server remoto il sistema operativo leggero (thin OS) e qualsiasi software applicativo necessario per l'esecuzione sul client.
  • Thin Client: Il client gestisce solo l'interfaccia utente (spesso basata su finestre), mentre l'applicazione viene eseguita su un server remoto, potenzialmente molto potente (es. cluster multiprocessore).

Requisiti per la Progettazione di Architetture Distribuite

Prestazioni

  • Tempo di Risposta: Per ottenere buoni tempi di risposta, i sistemi dovrebbero idealmente essere composti da pochi strati software e la quantità di dati trasferiti dovrebbe essere minimizzata.
  • Throughput (Produttività): La quantità di lavoro completato per unità di tempo.
  • Bilanciamento del Carico (Load Balancing): Tecniche come l'uso di applet, più server o computer per ospitare un singolo servizio possono distribuire il carico di lavoro.

Qualità del Servizio (QoS)

  • La QoS è la capacità dei sistemi di rispettare determinati limiti temporali e di risorse (es. banda, latenza).
  • Soddisfare questi requisiti dipende dalla disponibilità delle risorse necessarie (CPU, rete, memoria) al momento giusto.

Affidabilità

Include diversi aspetti legati al corretto funzionamento del sistema:

  • Correttezza: Il sistema si comporta secondo le specifiche.
  • Tolleranza ai Guasti: Capacità di continuare a funzionare correttamente nonostante guasti parziali.
  • Sicurezza: Protezione delle risorse e dei dati. Include:
    • Riservatezza (Privacy)
    • Integrità
    • Disponibilità

Tolleranza ai Guasti

Le applicazioni distribuite robuste dovrebbero continuare a funzionare correttamente in presenza di guasti hardware, software e di rete.

  • La ridondanza è una tecnica chiave per raggiungere la tolleranza ai guasti.
  • Per rendere affidabile la comunicazione, si utilizzano protocolli specifici e altre tecniche.

Sicurezza

  • Può essere vista come la necessità di collocare i dati sensibili e altre risorse solo su quei computer dotati di strumenti efficaci contro gli attacchi e accessi non autorizzati.

Modelli Fondamentali

Per comprendere e progettare sistemi distribuiti, si usano modelli astratti:

Modello di Interazione

Esamina le prestazioni e la difficoltà di fissare limiti temporali (sincronia vs asincronia) nell'interazione tra processi in un sistema distribuito.

Modello di Guasto

Cerca di dare una descrizione precisa dei tipi di guasti che possono verificarsi nei processi e nei canali di comunicazione (es. crash, omissione, bizantini).

Modello di Sicurezza

Identifica le potenziali minacce ai processi e ai canali di comunicazione (es. intercettazione, modifica, attacchi denial-of-service) e definisce meccanismi per contrastarle.

Voci correlate: