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:

  1. Ridurre al minimo la comunicazione tra cluster.
  2. 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.