📁
.net CMS
Caratteristiche > Prstazioni

Supporto server multipli

Applicazione multi-server

Per rendere l’idea di cosa sia l’applicazione multi server di Microsoft .NET, adotteremo un paragone che ne faciliterà la comprensione del concetto: Da sempre, uno dei misteri primordiali che assilla il genere umano, è riuscire a capire se stesso, e in tal senso grandi sforzi sono stati compiuti per arrivare innanzitutto a dare una definizione di anima non dal punto di vista prettamente teologico e capire quindi se questa sia puramente astratta.  Da lì ad arrivare a compiere esperimenti sul cervello umano, il passo è breve e nella storia - da sempre - si sono dilettati “scienziati” terribilmente cinici nel compiere sperimentazioni sulla mente viva infilandovi elettrodi e sottoponendolo ad acidi con il fine di scaturire sensazioni talmente al di fuori dell’immaginabile da sovrastare in intensità qualsiasi percezione innescabile da tortura, orgasmo o effetto dovuto a droga. Tra gli esperimenti più noti e qualsivoglia definibili come “semplici”, figurano tutti quelli classificabili con il termine di lobotomia, in particolare per quel che ci interessa a noi, prendiamo l’esperimento più facile che consiste nel dividere fra loro il lobo destro e quello sinistro del cervello. I sensori occhio destro e occhio sinistro sono rispettivamente collegati alle parti invertite del cervello, cosicché il “paziente” sottoposto a questo tipo di intervento, si è ritrovato con la parte destra del cervello collegata all’occhio sinistro e all’orecchio destro e viceversa, mantenendo le due parti del cervello fisicamente separate, cosicché, non essendovi alcun collegamento tra le due parti, ogni porzione è venuta ad assumere una propria entità assestante mantenendo inalterate quelle che sono le caratteristiche che ogni lobo assume nella sua posizione.
Nei soggetti in cui la capacita lessico labiale era sviluppata in entrambi le parti vennero effettuati una serie di esperimenti, il più noto e quello di mostrare ad esso una fotografia, per poi chiedergli, sussurrandogli nell’orecchio destro e tenendogli l’occhio sinistro bendato,  di scegliere la carta più opportuna per l’immagine pescandola tra una serie di figure, cosicché all’immagine di un paesaggio innevato, il paziente scelse la pala giustificando che la pala veniva utile per spalare la neve, poi l’immagine della neve venne sostituito con quella di una venere e nel contempo venne tolta la benda dall’occhio e venne nuovamente chiesto – questa volta sussurrando nell’altro orecchio – come mai avesse scelto proprio la vanga. La cavia sorprendentemente rispose d’aver scelto quella carta perché non era opportuno farsi trarre in inganno dalle apparenze e nell’eventualità poteva venir utile prendere la fanciulla a badilate nel caso non rigasse dritto.
La cosa più stupefacente di questo esperimento – il quale venne ripetuto su diversi soggetti e ottenne sempre risultati affini - è che il paziente (o meglio una parte di cervello) riusciva sempre a percepire quella scelta come una propria decisione anche se era stato l’altro lobo a farla senza che vi fosse la minima percezione di stare a mentire a se stessi.
Tornando a quello che invece è il tema di questo argomento, con applicazione multi server si intende che l’applicativo gira parallelamente su più macchine, ogni macchina è a se stante e - a differenza di come invece avviene per i processi multi core integrati nella stessa CPU - la memoria RAM è distinta, quindi qualsiasi istanza d’oggetto, valore di variabile o qualsiasi dato inserito nella memoria volatile, trova corrispondenza solamente nel computer in cui tale dato è stato istanziato o inizializzato, ogni singolo computer non hanno modo d’accedere ai dati volatili inerenti i processi in esecuzione sulle altre macchine, l’unica cosa condivisa sono i database  (che il nostro applicativo non utilizza), e i file su disco. Tale situazione può rendere l’applicativo instabile, tale instabilità si manifesta ogni qualvolta dei dati volatili non sincronizzati su tutte le macchine, possano scaturire funzionamenti non desiderati, quindi classificabili come anomali.
In particolar modo, lo strumento che maggiormente viene disturbato nel far girare un applicativo in configurazione multi server, è la cache, ovvero quel meccanismo che – con il fine di dar raggiungere all’applicativo prestazioni elevate – tiene in memoria collezioni d’oggetti o dati che maggiormente vengono utilizzati dall’applicativo stesso.
Con il fine di rendere l’applicativo da noi realizzato, pienamente compatibile in configurazione multi server, è stato sviluppato un modulo, dal nome Pipeline, che si occupa di stabilire un canale di comunicazione tra i server su cui gira l’applicativo, tale canale verrà utilizzato per notificare agli altri server, quando un oggetto viene modificato, in modo che se questi si trovasse in cache, venga liberato ed aggiornato.
La classe cache da noi implementata è integrata con il nostro sistema di pipeline, il tutto avviene in maniera completamente trasparente, ragion per cui lo sviluppatore che per la realizzazione di personalizzazioni o Plugin dovesse far ricorso alla cache, non dovrà preoccuparsi di nulla, saranno gli algoritmi sofisticati da noi messi a punto con il modulo Pipeline, a gestire tutto ciò che riguarda il funzionamento in configurazione multi server.
Anche l’accesso al disco per le operazioni di lettura e scrittura viene regolato dal nostro modulo FileManager affinché tali operazioni siano immuni da errori dovuti all’accesso in simultanea per i medesimi file da parte di server differenti.
La configurazione multi server, viene sovente utilizzata dai più noti provider senza che venga specificato nulla nel piano d’abbonamento (si veda per esempio il servizio di hosting offerto da Godaddy sui server europei), e non è nemmeno facile diagnosticare se l’hosting di cui si fa uso, giri in multi server, ragion per cui, un applicativo studiato in maniera nativa per l’utilizzo multi server, da piena garanzia di funzionamento in un maggior numero di casistiche e nel contempo gode dei benefici prestazionali che apporta l’operato di più server dediti in simbiosi nel far girare simultaneamente più istanze dello stesso applicativo.

Argomenti nella stessa categoria