Microsoft Orleans¶
Autor Lucas Olivera¶
Orleans es un marco de trabajo multiplataforma para construir aplicaciones distribuidas robustas y escalables. Orleans se extiende desde un solo servidor en las instalaciones hasta cientos o miles de aplicaciones distribuidas y altamente disponibles en la nube.
Modelo de Actor¶
Orleans se basa en el "modelo de actor". El modelo de actor es un modelo de programación en el que cada actor es un objeto ligero, concurrente e inmutable que encapsula un fragmento de estado y comportamiento correspondiente. Los actores se comunican exclusivamente entre sí mediante mensajes asíncronos.
Granos¶
El grano es una de las varias primitivas de Orleans. En términos del modelo de actor, un grano es un actor virtual. Los granos son entidades que comprenden identidad, comportamiento y estado definidos por el usuario. ver
Silos¶
Un Silo en el contexto de Orleans es una instancia de ejecución que aloja una o más "granos" (grains).Los Silos proporcionan a los granos un conjunto de servicios de tiempo de ejecución, como temporizadores, recordatorios (temporizadores persistentes), persistencia, transacciones, flujos y más.
Típicamente, un grupo de Silos se ejecuta como un clúster para escalabilidad y tolerancia a fallos. Cuando se ejecutan como un clúster, los Silos se coordinan entre sí para distribuir el trabajo y detectar y recuperarse de fallos. El tiempo de ejecución permite que los granos alojados en el clúster se comuniquen entre sí como si estuvieran dentro de un solo proceso.
Además, 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.
Los Silos son, por lo tanto, una parte integral de la infraestructura de Orleans que permite la escalabilidad y la tolerancia a fallos de las aplicaciones distribuidas.
¿Qué puedo hacer con Orleans?¶
Orleans es un marco de trabajo para construir aplicaciones nativas en la nube y debe considerarse siempre que esté construyendo aplicaciones .NET que eventualmente necesitarán escalar.
Persistencia¶
Orleans proporciona un modelo de persistencia simple que garantiza que el estado esté disponible antes de procesar una solicitud, y que su consistencia se mantenga.
Temporizadores y recordatorios¶
Los recordatorios son un mecanismo de programación duradero para los granos. Los temporizadores son el contraparte no duradero de los recordatorios y se pueden usar para eventos de alta frecuencia, que no requieren confiabilidad.
Colocación de granos flexible¶
Cuando un grano se activa en Orleans, el tiempo de ejecución decide en qué servidor (silo) activar ese grano. Este es llamado colocación de grano.
Versionado de granos y clusters heterogéneos¶
Para tener en cuenta esto, las interfaces de grano en Orleans pueden ser versionadas.
Trabajadores sin estado¶
Los trabajadores sin estado son granos especialmente marcados que no tienen ningún estado asociado y pueden activarse en varios silos simultáneamente.
Filtros de llamadas de grano¶
Un filtro de llamadas de grano es una lógica que es común a muchos granos. Orleans admite filtros tanto para llamadas entrantes como salientes.
Contexto de solicitud¶
Los metadatos y otra información se pueden pasar con una serie de solicitudes utilizando el contexto de solicitud.
Transacciones ACID distribuidas¶
Además del modelo de persistencia simple descrito anteriormente, los granos pueden tener un estado transaccional.
Streams¶
Las transmisiones ayudan a los desarrolladores a procesar una serie de elementos de datos en tiempo casi real.