Architetture dei sistemi distribuiti Prof Architetture dei sistemi distribuiti Prof. Barbara Pernici Politecnico di Milano
Sommario Sistemi distribuiti Meccanismi: Middleware RPC Client-server Middleware Distributed object computing Tecnologie per sistemi a oggetti distribuiti J2EE e Enterprise Java Beans
Obiettivi Definizione dei concetti di base dei SI distrbuiti Introduzione alle piattaforme tecnologiche
Bibliografia Serie Sistemi Informativi Vol. V Lucidi (in rete) Cap. 1: architetture (escl. 3.4) Lucidi (in rete)
Sistemi informativi distribuiti SI distribuito: Sistema costituito da un insieme di applicazioni logicamente indipendenti che collaborano per il perseguimento di obiettivi comuni attraverso una infrastruttura di comunicazione hardware e software elaborazione distribuita Le applicazioni, fra loro cooperanti, risiedono su piu’ nodi elaborativi base di dati distribuita Il patrimonio informativo, unitario, e’ ospitato su piu’ nodi elaborativi
SI ad accoppiamento forte concepiti in modo unitario risorse informative e elaborative controllate da una o più unità organizzative comunque facenti riferimento a una unica autorità. unitarietà nelle scelte architetturali e tecnologiche integrazione dei sottosistemi in un unico sistema complessivo Risultato - elevata qualità del servizio reso all’utenza - aumento dei vincoli organizzativi e tecnologici esistenti fra le unità organizzative che cooperano
SI ad accoppiamento debole risorse informative e elaborative preesistenti soggetti organizzativi fra loro autonomi che, per motivi istituzionali o di business, hanno interesse a cooperare per fornire servizi a valore aggiunto normalizzazione nelle scelte architetturali e tecnologiche (interfacce verso le risorse messe a fattore comune rispondenti a una logica unitaria) logiche di federazione dei sottosistemi logiche di proceduralità (processi di cui si deve garantire l’avanzamento e il tracciamento) modesto aumento dei vincoli organizzativi e tecnologici: regole di interfacciamento concordate
RPC: Remote Procedure Call
RPC Sistemi a accoppiamento forte La chiamata di una procedura remota non e’ completamente analoga alla chiamata di una procedura locale Possibili limitazioni ai formati dei dati Dati composti, puntatori Gestione delle eccezioni Ies malfunzionamento del canale trasmissivo Invocazione concorrente della stessa procedura remota da parte di piu’ programmi chiamanti
Sistemi client-server Cliente Servente Attore Processo client Processo server Richiesta di servizio Esecuzione Restituzione del servizio della risposta tempo
Sistemi client-server Accoppiamento forte Un processo servente puo’ servire piu’ processi cliente Logica Bloccante Non bloccante (invio richiesta, notifica di esecuzione) Processo servente sempre attivo vs attivazione ogni volta che pervenga una richiesta
Sistemi a oggetti distribuiti Accoppiamento forte e accoppiamento debole Infrastruttura per gestire problematuche architetturali, tecnologiche e gestionali
DOC Distributed Object Computing Se accoppiamento forte: Unica macchina virtuale Se accoppiamento debole: Definizione dei servizi di cooperazione e delle interfacce di invocazione Repository Logiche di tipo sincrono e asincrono con scambio messaggi
Modello a oggetti (1) Oggetto Interfaccia Dati (stato) Funzioni (comportamento) Identita’ Istanziazione di una classe Interfaccia Servizi messi a disposizione da un oggetti e invocabili da altri oggetti
Modello a oggetti (2) Connessione tra oggetti: Sincrona (bloccante) Asincrona Pull (cliente chiede l’esecuzione del servizio) Push (servente propone attivamente il servizio) Interfaccia Oggetto servente Oggetto cliente Gestore ordini Gestore acquisti Connessione
Sistema di commercio elettronico
Comunicazione Sincrona Asincrona Request/reply Publish & Subscribe (sottoscrizione a informazioni prodotte da editori e distribuite da un distributore) Multicasting Instance Based Routing (con criteri di selezione messaggi) Store & forward (consegna a tutti i sottoscrittori, anche se non sono sempre attivi)
Comunicazione Publish&Subscribe
comunicazione Multicasting
Middleware Middleware: un insieme di componenti software che realizzano una macchina virtuale Tipologie: middleware generalizzato middleware orientati a specifiche classi di servizio: middleware per l’accesso a basi di dati interfaccie di programmazione per l’accesso a basi di dati da parte di applicazioni software in modo indipendente dalle caratteristiche fisiche dei singoli sistemi di gestione dei dati; Open Data Base Connectivity – ODBC Java Data Base Connectivity – JDBC Middleware per la gestione di transazioni Es. Distributed Transaction Processing – DTP del consorzio X/Open, che specifica le modalità mediante le quali processi diversi possono fra loro collaborare per attuare transazioni distribuite.
4 classi tecnologiche
Middleware generalizzato Include: Servizi di supporto: strumenti di comunicazione (notification service per comunicazione asincrona) servizi di sicurezza servizi di indirizzamento (naming service) meccanismi di sincronizzazione (incl. time service) servizi di accodamento messaggi Servizi di “trasparenza” (virtualizzazione) Servizi di monitoraggio Supporto a transazioni distribuite ACID: atomica, consistente, isolata, durabile (persistente)
Esempio di transazione distribuita
DOC (1) Formalismi di definizione di oggetti (IDL interface definition language) Protocolli di interoperabilita’ (tipi di messaggi da scambiare e sequenze ammissibili) Servizi di intermediazione tra oggetti (object broker) Individuazione oggetti Object Request Broker (ORB): registro servizi disponibili e degli oggetti che li mettono a disposizione –> possibilita’ di riconfigurazione dinamica delle applicazioni (es. in caso di malfunzionamento)
DOC (2)
DOC (3) Servizi di supporto per oggetti Meccanismi per lo scambio di messaggi Sincroni/asincroni Message broker (per gestione code di messaggi) Coordinamento di procedure con sequenze di passi eseguiti da oggetti diversi Servizi di supporto per oggetti Gestione del ciclo di vita di un oggetto Gestione della persistenza Linguaggi di interrogazione Gestione uso degli oggetti (licensing service) Servizi di supporto (vedi middleware generalizzato)
Infrastrutture per il Distributed Object Computing Common Object Request Broker Architecture - CORBA promossa da Object Management Group - OMG: CORBA è uno standard industriale per la realizzazione di infrastrutture a oggetti distribuiti operanti su reti e sistemi eterogenei; Enterprise Java Beans Focus su logica applicativa Servizi di supporto separati da logica applicativa Oggetti pubblicati all’interno di un application server MS DCOM La famiglia delle tecnologie Web
CORBA (Internet interORB protocol)
CORBA