Saltar a contenido

Grains

Introducción

Los granos (grains) en Orleans son la unidad fundamental de procesamiento y son una implementación del modelo de actor. Cada grano es una entidad que encapsula una identidad definida por el usuario, comportamiento y estado. Los granos son entidades lógicas que siempre existen, virtualmente. Un grano no puede ser creado ni destruido explícitamente, y su existencia virtual no se ve afectada por el fallo de un servidor que lo ejecuta.

Los granos pueden ser invocados por otros granos o por cualquier número de clientes externos. Cada grano es una instancia de una clase que implementa una o más de las siguientes interfaces:

  • IGrainWithGuidKey: Interfaz marcadora para granos con claves Guid.
  • IGrainWithIntegerKey: Interfaz marcadora para granos con claves Int64.
  • IGrainWithStringKey: Interfaz marcadora para granos con claves de cadena.
  • IGrainWithGuidCompoundKey: Interfaz marcadora para granos con claves compuestas.
  • IGrainWithIntegerCompoundKey: Interfaz marcadora para granos con claves compuestas.

Los granos pueden tener datos de estado volátiles o persistentes que pueden almacenarse en cualquier sistema de almacenamiento. Como tal, los granos dividen implícitamente los estados de la aplicación, permitiendo la escalabilidad automática y simplificando la recuperación de fallos. El estado del grano se mantiene en memoria mientras el grano está activo, lo que lleva a una latencia más baja y menos carga en las tiendas de datos.

State Grain

La instanciación de granos se realiza automáticamente bajo demanda por el tiempo de ejecución de Orleans. Los granos que no se utilizan durante un tiempo se eliminan automáticamente de la memoria para liberar recursos. Esto es posible debido a su identidad estable, que permite invocar granos ya sea que ya estén cargados en memoria o no. Esto también permite una recuperación transparente de fallos porque el llamante no necesita saber en qué servidor se instanció un grano en un momento dado.

En resumen, los granos en Orleans son la unidad fundamental de procesamiento y encapsulan la identidad, el comportamiento y el estado en una aplicación distribuida.

Lecturas recomendadas

  1. Desarrollar Granos
  2. Persistencia de Granos
  3. Ciclo de vida de Grano Complementar con: Migración 3.x to 7.0
  4. Serialización
  5. Procesamiento Concurrente Complementar con: Migración 3.x to 7.0
  6. Template Andreani