Architettura distribuita

Nell'architettura distribuita, i componenti sono presentati su piattaforme diverse e diversi componenti possono cooperare tra loro su una rete di comunicazione al fine di raggiungere un obiettivo o un obiettivo specifico.

  • In questa architettura, l'elaborazione delle informazioni non è limitata a una singola macchina, ma è distribuita su diversi computer indipendenti.

  • Un sistema distribuito può essere dimostrato dall'architettura client-server che costituisce la base per architetture multi-tier; le alternative sono l'architettura del broker come CORBA e l'architettura orientata ai servizi (SOA).

  • Esistono diversi framework tecnologici per supportare architetture distribuite, inclusi .NET, J2EE, CORBA, servizi Web .NET, servizi Web AXIS Java e servizi Globus Grid.

  • Il middleware è un'infrastruttura che supporta adeguatamente lo sviluppo e l'esecuzione di applicazioni distribuite. Fornisce un buffer tra le applicazioni e la rete.

  • Si trova al centro del sistema e gestisce o supporta i diversi componenti di un sistema distribuito. Esempi sono monitor di elaborazione delle transazioni, convertitori di dati e controller di comunicazione, ecc.

Middleware come infrastruttura per sistema distribuito

La base di un'architettura distribuita è la sua trasparenza, affidabilità e disponibilità.

La tabella seguente elenca le diverse forme di trasparenza in un sistema distribuito:

Sr.No. Trasparenza e descrizione
1

Access

Nasconde il modo in cui si accede alle risorse e le differenze nella piattaforma dati.

2

Location

Nasconde dove si trovano le risorse.

3

Technology

Nasconde all'utente diverse tecnologie come il linguaggio di programmazione e il sistema operativo.

4

Migration / Relocation

Nascondi le risorse che possono essere spostate in un'altra posizione che sono in uso.

5

Replication

Nascondi le risorse che possono essere copiate in più posizioni.

6

Concurrency

Nascondi le risorse che possono essere condivise con altri utenti.

7

Failure

Nasconde gli errori e il ripristino delle risorse dall'utente.

8

Persistence

Nasconde se una risorsa (software) è in memoria o su disco.

Vantaggi

  • Resource sharing - Condivisione di risorse hardware e software.

  • Openness - Flessibilità nell'utilizzo di hardware e software di diversi fornitori.

  • Concurrency - Elaborazione simultanea per migliorare le prestazioni.

  • Scalability - Maggiore produttività con l'aggiunta di nuove risorse.

  • Fault tolerance - La capacità di continuare a funzionare dopo che si è verificato un guasto.

Svantaggi

  • Complexity - Sono più complessi dei sistemi centralizzati.

  • Security - Più suscettibile agli attacchi esterni.

  • Manageability - Maggiore impegno richiesto per la gestione del sistema.

  • Unpredictability - Risposte imprevedibili a seconda dell'organizzazione del sistema e del carico di rete.

Sistema centralizzato vs sistema distribuito

Criteri Sistema centralizzato Sistema distribuito
Economia Basso Alto
Disponibilità Basso Alto
Complessità Basso Alto
Consistenza Semplice Alto
Scalabilità Povero Buona
Tecnologia Omogeneo Eterogeneo
Sicurezza Alto Basso

Architettura client-server

L'architettura client-server è l'architettura di sistema distribuito più comune che scompone il sistema in due principali sottosistemi o processi logici:

  • Client - Questo è il primo processo che invia una richiesta al secondo processo, ovvero il server.

  • Server - Questo è il secondo processo che riceve la richiesta, la esegue e invia una risposta al client.

In questa architettura, l'applicazione è modellata come un insieme di servizi forniti dai server e un insieme di client che utilizzano questi servizi. I server non devono conoscere i client, ma i client devono conoscere l'identità dei server e la mappatura dei processori ai processi non è necessariamente 1: 1

L'architettura client-server può essere classificata in due modelli basati sulla funzionalità del client:

Modello thin client

Nel modello thin-client, tutta l'elaborazione dell'applicazione e la gestione dei dati è effettuata dal server. Il cliente è semplicemente responsabile dell'esecuzione del software di presentazione.

  • Utilizzato quando i sistemi legacy vengono migrati su architetture client server in cui il sistema legacy funge da server a sé stante con un'interfaccia grafica implementata su un client

  • Uno dei principali svantaggi è che pone un carico di elaborazione pesante sia sul server che sulla rete.

Modello Thick / Fat-client

Nel modello thick client, il server è responsabile solo della gestione dei dati. Il software sul client implementa la logica dell'applicazione e le interazioni con l'utente del sistema.

  • Più appropriato per i nuovi sistemi C / S in cui le capacità del sistema client sono note in anticipo

  • Più complesso di un modello thin client soprattutto per la gestione. Le nuove versioni dell'applicazione devono essere installate su tutti i client.

Vantaggi

  • Separazione delle responsabilità come la presentazione dell'interfaccia utente e l'elaborazione della logica di business.

  • Riusabilità dei componenti del server e potenziale di concorrenza

  • Semplifica la progettazione e lo sviluppo di applicazioni distribuite

  • Semplifica la migrazione o l'integrazione delle applicazioni esistenti in un ambiente distribuito.

  • Inoltre, fa un uso efficace delle risorse quando un numero elevato di client accede a un server ad alte prestazioni.

Svantaggi

  • Mancanza di infrastrutture eterogenee per far fronte ai cambiamenti dei requisiti.

  • Complicazioni di sicurezza.

  • Disponibilità e affidabilità del server limitate.

  • Testabilità e scalabilità limitate.

  • Clienti grassi con presentazione e logica aziendale insieme.

Architettura multilivello (architettura a più livelli)

L'architettura multilivello è un'architettura client-server in cui le funzioni come la presentazione, l'elaborazione dell'applicazione e la gestione dei dati sono fisicamente separate. Separando un'applicazione in livelli, gli sviluppatori hanno la possibilità di modificare o aggiungere un livello specifico, invece di rielaborare l'intera applicazione. Fornisce un modello con cui gli sviluppatori possono creare applicazioni flessibili e riutilizzabili.

L'utilizzo più generale dell'architettura multi-livello è l'architettura a tre livelli. Un'architettura a tre livelli è in genere composta da un livello di presentazione, un livello di applicazione e un livello di archiviazione dati e può essere eseguita su un processore separato.

Livello di presentazione

Il livello di presentazione è il livello più alto dell'applicazione a cui gli utenti possono accedere direttamente come la pagina Web o la GUI del sistema operativo (interfaccia utente grafica). La funzione principale di questo livello è tradurre le attività ei risultati in qualcosa che l'utente possa capire. Comunica con altri livelli in modo da posizionare i risultati nel livello browser / client e in tutti gli altri livelli nella rete.

Livello applicazione (logica aziendale, livello logico o livello intermedio)

Il livello applicazione coordina l'applicazione, elabora i comandi, prende decisioni logiche, valuta ed esegue calcoli. Controlla la funzionalità di un'applicazione eseguendo un'elaborazione dettagliata. Inoltre, sposta ed elabora i dati tra i due livelli circostanti.

Livello dati

In questo livello, le informazioni vengono archiviate e recuperate dal database o dal file system. Le informazioni vengono quindi restituite per l'elaborazione e quindi nuovamente all'utente. Include i meccanismi di persistenza dei dati (server di database, condivisioni di file, ecc.) E fornisce API (Application Programming Interface) al livello dell'applicazione che fornisce metodi di gestione dei dati memorizzati.

Advantages

  • Prestazioni migliori rispetto a un approccio thin client ed è più semplice da gestire rispetto a un approccio thick client.

  • Migliora la riusabilità e la scalabilità: con l'aumentare delle richieste, è possibile aggiungere server aggiuntivi.

  • Fornisce supporto multi-threading e riduce anche il traffico di rete.

  • Fornisce manutenibilità e flessibilità

Disadvantages

  • Testabilità insoddisfacente a causa della mancanza di strumenti di test.

  • Affidabilità e disponibilità del server più critiche.

Broker Architectural Style

Broker Architectural Style è un'architettura middleware utilizzata nell'elaborazione distribuita per coordinare e abilitare la comunicazione tra server e client registrati. In questo caso, la comunicazione degli oggetti avviene tramite un sistema middleware chiamato broker di richieste di oggetti (bus software).

  • Il client e il server non interagiscono direttamente tra loro. Il client e il server hanno una connessione diretta al suo proxy che comunica con il mediatore-broker.

  • Un server fornisce servizi registrando e pubblicando le proprie interfacce con il broker ei client possono richiedere i servizi dal broker in modo statico o dinamico mediante ricerca.

  • CORBA (Common Object Request Broker Architecture) è un buon esempio di implementazione dell'architettura broker.

Componenti dello stile architettonico del broker

I componenti dello stile architettonico del broker sono discussi attraverso le seguenti voci:

Broker

Il broker è responsabile del coordinamento della comunicazione, come l'inoltro e l'invio dei risultati e delle eccezioni. Può essere un servizio orientato alle chiamate, un documento o un broker orientato ai messaggi a cui i client inviano un messaggio.

  • È responsabile dell'intermediazione delle richieste di servizio, dell'individuazione di un server appropriato, della trasmissione delle richieste e dell'invio delle risposte ai client.

  • Conserva le informazioni di registrazione dei server, comprese le loro funzionalità e servizi, nonché le informazioni sulla posizione.

  • Fornisce API per le richieste dei client, i server per rispondere, la registrazione o l'annullamento della registrazione dei componenti del server, il trasferimento dei messaggi e l'individuazione dei server.

Stub

Gli stub vengono generati al momento della compilazione statica e quindi distribuiti sul lato client che viene utilizzato come proxy per il client. Il proxy lato client funge da mediatore tra il cliente e il broker e fornisce ulteriore trasparenza tra questi e il cliente; un oggetto remoto appare come uno locale.

Il proxy nasconde l'IPC (comunicazione tra processi) a livello di protocollo ed esegue il marshalling dei valori dei parametri e l'annullamento del marshalling dei risultati dal server.

Skeleton

Lo scheletro viene generato dalla compilazione dell'interfaccia del servizio e quindi distribuito sul lato server, che viene utilizzato come proxy per il server. Il proxy lato server incapsula funzioni di rete specifiche del sistema di basso livello e fornisce API di alto livello per mediare tra il server e il broker.

Riceve le richieste, decomprime le richieste, annulla il marshalling degli argomenti del metodo, chiama il servizio appropriato e esegue anche il marshalling del risultato prima di rimandarlo al client.

Bridge

Un bridge può connettere due reti differenti in base a protocolli di comunicazione differenti. Media diversi broker tra cui DCOM, .NET Remote e Java CORBA broker.

I bridge sono un componente opzionale, che nasconde i dettagli di implementazione quando due broker interagiscono e accettano richieste e parametri in un formato e li traducono in un altro formato.

Broker implementation in CORBA

CORBA è uno standard internazionale per un Object Request Broker, un middleware per gestire le comunicazioni tra oggetti distribuiti definiti da OMG (Object Management Group).

Architettura orientata ai servizi (SOA)

Un servizio è un componente della funzionalità aziendale che è ben definito, autonomo, indipendente, pubblicato e disponibile per essere utilizzato tramite un'interfaccia di programmazione standard. Le connessioni tra i servizi sono condotte da protocolli orientati ai messaggi comuni e universali come il protocollo del servizio Web SOAP, che può fornire richieste e risposte tra i servizi liberamente.

L'architettura orientata ai servizi è una progettazione client / server che supporta un approccio IT orientato al business in cui un'applicazione è costituita da servizi software e consumatori di servizi software (noti anche come clienti o richiedenti di servizi).

Caratteristiche di SOA

Un'architettura orientata ai servizi fornisce le seguenti funzionalità:

  • Distributed Deployment - Esporre i dati aziendali e la logica aziendale come unità di funzionalità vaghe, accoppiate, rilevabili, strutturate, basate su standard, a grana grossa e senza stato chiamate servizi.

  • Composability - Assemblare nuovi processi dai servizi esistenti che sono esposti a una granularità desiderata attraverso interfacce di reclamo ben definite, pubblicate e standard.

  • Interoperability - Condivisione di funzionalità e riutilizzo di servizi condivisi su una rete indipendentemente dai protocolli sottostanti o dalla tecnologia di implementazione.

  • Reusability - Scegli un fornitore di servizi e accedi alle risorse esistenti esposte come servizi.

Operazione SOA

La figura seguente illustra come funziona SOA:

Advantages

  • Il libero accoppiamento di orientamento al servizio offre alle aziende una grande flessibilità per utilizzare tutti i servizi disponibili indipendentemente dalle limitazioni della piattaforma e della tecnologia.

  • Ogni componente del servizio è indipendente dagli altri servizi a causa della funzionalità del servizio senza stato.

  • L'implementazione di un servizio non influirà sull'applicazione del servizio fintanto che l'interfaccia esposta non viene modificata.

  • Un client o qualsiasi servizio può accedere ad altri servizi indipendentemente dalla piattaforma, dalla tecnologia, dai fornitori o dalle implementazioni del linguaggio.

  • Riusabilità di beni e servizi poiché i clienti di un servizio devono solo conoscere le sue interfacce pubbliche, la composizione del servizio.

  • Lo sviluppo di applicazioni aziendali basato su SOA è molto più efficiente in termini di tempo e costi.

  • Migliora la scalabilità e fornisce una connessione standard tra i sistemi.

  • Utilizzo efficiente ed efficace dei "servizi aziendali".

  • L'integrazione diventa molto più semplice e migliora l'interoperabilità intrinseca.

  • Complessità astratta per gli sviluppatori e stimola i processi aziendali più vicini agli utenti finali.