Supporto di più cluster
Il supporto per più cluster è stato rimosso nella versione 2. La documentazione seguente fa riferimento a Orleans v1. Orleans v.1.3.0 aggiunto il supporto per la federazione di più cluster Orleans in un multi-cluster connesso in modo libero che funge da singolo servizio. I multi-cluster facilitano la distribuzione geografica come servizio, ovvero semplificano l'esecuzione di un'applicazione Orleans in più data center in tutto il mondo. Inoltre, un multi-cluster può essere eseguito all'interno di un singolo data center per ottenere un migliore isolamento delle prestazioni e degli errori.
Tutti i meccanismi sono progettati con particolare attenzione a:
- Ridurre al minimo la comunicazione tra cluster.
- Lasciare che ogni cluster venga eseguito in modo autonomo anche se altri cluster hanno esito negativo o diventano non raggiungibili.
Configurazione e funzionamento
Di seguito viene illustrato come configurare e gestire un multi-cluster.
Comunicazione. I cluster comunicano tramite le stesse connessioni da silo a silo usate all'interno di un cluster. Per scambiare informazioni sullo stato e sulla configurazione, i cluster usano un meccanismo di gossip e implementazioni di canali gossip.
Configurazione silo. I silo devono essere configurati in modo che sappiano a quale cluster appartengono (ogni cluster è identificato da una stringa univoca). Inoltre, ogni silo deve essere configurato con stringhe di connessione che consentono loro di connettersi a uno o più canali gossip all'avvio.
Inserimento della configurazione multi-cluster. In fase di esecuzione, l'operatore del servizio può specificare e/o modificare la configurazione multi-cluster, che contiene un elenco di ID cluster, per specificare quali cluster fanno parte del multi-cluster corrente. Questa operazione viene eseguita chiamando la granularità di gestione in uno dei cluster.
Grani multi-cluster
Di seguito viene illustrato come usare la funzionalità multi-cluster a livello di applicazione.
Grani globali a istanza singola. Gli sviluppatori possono indicare quando e come i cluster devono coordinare le directory di granularità relative a una determinata classe di granularità. GlobalSingleInstanceAttribute indica che si vuole lo stesso comportamento dell'esecuzione Orleans in un singolo cluster globale, ovvero instradare tutte le chiamate a una singola attivazione della granularità. Viceversa, OneInstancePerClusterAttribute indica che ogni cluster può avere l'attivazione indipendente. Ciò è appropriato se la comunicazione tra cluster non è desiderata.
Grani di visualizzazione log (non nella versione 1.3.0). Tipo speciale di granularità che usa una nuova API, simile all'origine eventi, per la sincronizzazione o la persistenza dello stato di granularità. Può essere usato per sincronizzare in modo automatico ed efficiente lo stato di un livello di granularità tra i cluster e con l'archiviazione. Poiché gli algoritmi di sincronizzazione sono sicuri da usare con grani rientranti e sono ottimizzati per l'uso dell'invio in batch e della replica, può offrire prestazioni migliori rispetto ai grani standard quando si accede di frequente a più cluster e/o quando viene scritto frequentemente nell'archiviazione. Il supporto per i grani di visualizzazione log non fa ancora parte del ramo principale. È disponibile una versione preliminare, che include degli esempi e una parte di documentazione nel ramo geo-orleans
. Attualmente viene valutata in produzione da un early adopter.