Compatibilidad con varios clústeres

La compatibilidad con varios clústeres se quitó en la versión 2. La documentación siguiente hace referencia a Orleans v1. Orleans v.1.3.0 agregó compatibilidad con la federación de varios clústeres de Orleans en un clúster múltiple débilmente conectado que actúa como un único servicio. Los clústeres múltiples facilitan la distribución geográfica como servicio, es decir, facilitan la ejecución de una aplicación de Orleans en varios centros de datos de todo el mundo. Además, se puede ejecutar un clúster múltiple dentro de un único centro de datos para obtener un mejor aislamiento de rendimiento y errores.

Todos los mecanismos están diseñados con especial atención a:

  1. Minimice la comunicación entre clústeres.
  2. Deje que cada clúster se ejecute de forma autónoma incluso si se producen errores en otros clústeres o se vuelven inaccesibles.

Configuración y funcionamiento

A continuación se documenta cómo configurar y operar un clúster múltiple.

Comunicación. Los clústeres se comunican a través de las mismas conexiones de silo a silo que se usan en un clúster. Para intercambiar información de estado y configuración, los clústeres usan un mecanismo de chismes y implementaciones de canal de cuchicheos.

Configuración del silo. Los silos deben configurarse para saber a qué clúster pertenecen (cada clúster se identifica mediante una cadena única). Además, cada silo debe configurarse con cadenas de conexión que les permitan conectarse a uno o varios canales de cuchicheos al iniciarse.

Inserción de configuración de varios clústeres. En tiempo de ejecución, el operador de servicio puede especificar o cambiar la configuración de varios clústeres, que contiene una lista de identificadores de clúster, para especificar qué clústeres forman parte del clúster múltiple actual. Esto se hace llamando al grano de administración en cualquiera de los clústeres.

Granos de varios clústeres

A continuación se documenta cómo usar la funcionalidad de varios clústeres en el nivel de aplicación.

Granos de instancia única global. Los desarrolladores pueden indicar cuándo y cómo los clústeres deben coordinar sus directorios de granos en relación con una clase específica. GlobalSingleInstanceAttribute significa que queremos el mismo comportamiento que al ejecutar Orleans en un clúster global, es decir, enrutar todas las llamadas a una única activación del grano. Por el contrario, OneInstancePerClusterAttribute indica que cada clúster puede tener su activación independiente. Esto es adecuado si no interesa la comunicación entre clústeres.

Granos de vista de registro(no en v.1.3.0). Un tipo especial de grano que usa una NUEVA API, similar a la fuente de eventos, para sincronizar o conservar el estado de grano. Se puede usar para sincronizar de forma automática y eficaz el estado de un grano entre clústeres y con el almacenamiento. Dado que sus algoritmos de sincronización son seguros de usar con granos reentrantes y están optimizados para usar procesamiento por lotes y replicación, puede funcionar mejor que los granos estándar cuando se accede con frecuencia a un grano en varios clústeres o cuando se escribe con frecuencia en el almacenamiento. La compatibilidad con los granos de vista de registro aún no forma parte de la rama principal. Tenemos una versión preliminar, incluidos ejemplos y un poco de documentación en la rama geo-orleans. Actualmente se está evaluando en producción por un usuario pionero.