Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Orleans garantiza que cuando se realiza una llamada de grano, una instancia de ese grano está disponible en memoria en algún servidor del clúster para atender la solicitud. Si el grano no está activo actualmente en el clúster, Orleans elige un servidor para activar el grano. Este proceso se denomina ubicación de grano. La colocación también es una manera Orleans de equilibrar la carga: colocar granos ocupados uniformemente ayuda a distribuir la carga de trabajo en el clúster.
El proceso de colocación en Orleans es totalmente configurable. Elija entre políticas de ubicación predefinidas, como aleatoria, preferencia local y en función de la carga, o configure lógica personalizada. Esto permite una flexibilidad total para decidir dónde se crean los granos. Por ejemplo, coloque granos en un servidor cerca de los recursos con los que necesitan operar o cerca de otros granos con los que se comunican.
Nota:
Orleans A partir de la versión 9.2, la estrategia de selección de ubicación predeterminada cambió de ubicación aleatoria a ubicación optimizada para recursos. Esto proporciona una mejor distribución de carga en función del uso de cpu y memoria en los silos. Si necesita el comportamiento anterior de selección de ubicación aleatoria, configúrelo explícitamente como se describe en Configuración de la estrategia de selección de ubicación predeterminada.
De forma predeterminada, Orleans elige un servidor compatible aleatoriamente.
Configurar la estrategia de colocación que Orleans utiliza globalmente o por clase de grano.
Colocación optimizada de recursos (valor predeterminado)
Nota:
A partir de la versión 9.2, la estrategia de colocación optimizada para recursos es la estrategia Orleans. No es necesario configurarlo explícitamente a menos que quiera personalizar las opciones.
Para usar la colocación optimizada de recursos, agregue el ResourceOptimizedPlacementAttribute en su clase de grano.
La colocación optimizada para recursos no está disponible en esta versión de Orleans. Considere la posibilidad de actualizar a Orleans la versión 8.1 o posterior para usar esta característica.
La estrategia de selección de ubicación optimizada para recursos intenta optimizar los recursos del clúster al equilibrar las activaciones específicas entre silos en función de la memoria disponible y el uso de CPU. Asigna ponderaciones a las estadísticas en tiempo de ejecución para priorizar los distintos recursos y calcula una puntuación normalizada para cada silo. Se elige el silo con la puntuación más baja para colocar la próxima activación. La normalización garantiza que cada propiedad contribuye proporcionalmente a la puntuación general. Ajuste los pesos a través de ResourceOptimizedPlacementOptions en función de requisitos y prioridades específicos para diferentes recursos.
Además, esta estrategia de colocación ofrece una opción de crear una preferencia más fuerte por el silo local (el que recibe la solicitud para realizar una nueva selección de ubicación) para ser elegido como destino de la activación. Controle esto a través de la LocalSiloPreferenceMargin propiedad , parte de las opciones.
Además, un algoritmo en línea y adaptable proporciona un efecto de suavizado que evita caídas rápidas de señal al transformar la señal en un proceso de decaimiento similar a un polinomio. Esto es especialmente importante para el uso de CPU y contribuye en general a evitar la saturación de los recursos en los silos, especialmente los recién unidos.
Este algoritmo se basa en la selección de ubicación basada en recursos con filtrado de Kalman en modo dual cooperativo.
Configure esta estrategia de selección de ubicación agregando el ResourceOptimizedPlacementAttribute a la clase de grano.
Opciones de ubicación optimizadas para el uso de recursos
Configure la estrategia de colocación optimizada de recursos mediante ResourceOptimizedPlacementOptions:
siloBuilder.Configure<ResourceOptimizedPlacementOptions>(options =>
{
options.CpuUsageWeight = 40;
options.MemoryUsageWeight = 20;
options.AvailableMemoryWeight = 20;
options.MaxAvailableMemoryWeight = 5;
options.ActivationCountWeight = 15;
options.LocalSiloPreferenceMargin = 5;
});
| Opción | Tipo | Predeterminado | Description |
|---|---|---|---|
CpuUsageWeight |
int |
40 | La importancia del uso de CPU. Los valores más altos favorecen silos con un menor uso de CPU. Intervalo válido: 0-100. |
MemoryUsageWeight |
int |
20 | La importancia del uso de memoria. Los valores más altos favorecen silos con un menor uso de memoria. Intervalo válido: 0-100. |
AvailableMemoryWeight |
int |
20 | Importancia de la memoria disponible. Los valores más altos favorecen silos con más memoria disponible. Intervalo válido: 0-100. |
MaxAvailableMemoryWeight |
int |
5 | Importancia de la memoria máxima disponible. Los valores más altos favorecen silos con mayor capacidad de memoria física. Útil en clústeres con recursos distribuidos desigualmente. Intervalo válido: 0-100. |
ActivationCountWeight |
int |
15 | La importancia del recuento de activación. Los valores más altos favorecen silos con menos granos activos. Intervalo válido: 0-100. |
LocalSiloPreferenceMargin |
int |
5 | Margen para preferir el silo local. Cuando se establece en 0, siempre selecciona el silo con un uso más bajo. Cuando se establece en 100, siempre prefiere el silo local (equivalente a PreferLocalPlacement). Recomendado: 5-10. Intervalo válido: 0-100. |
Nota:
Los valores de peso no necesitan sumar a 100. Orleans normaliza automáticamente, por lo que representan una importancia relativa en lugar de porcentajes absolutos.
Colocación aleatoria
Orleans selecciona aleatoriamente un servidor de los servidores compatibles del clúster. Para configurar esta estrategia de colocación, agregue el RandomPlacementAttribute a la clase de grano.
Ubicación local
Si el servidor local es compatible, Orleans selecciona el servidor local; de lo contrario, selecciona un servidor aleatorio. Configure esta estrategia de selección de ubicación agregando el PreferLocalPlacementAttribute a la clase de grano.
Colocación en función del hash
Orleans convierte el identificador de grano en un hash, obteniendo un entero no negativo, y aplica una operación de módulo con el número de servidores compatibles. A continuación, selecciona el servidor correspondiente en la lista de servidores compatibles ordenados por dirección del servidor. Tenga en cuenta que no se garantiza que esta ubicación permanezca estable a medida que cambia la pertenencia al clúster. En concreto, agregar, quitar o reiniciar servidores puede alterar el servidor seleccionado para un determinado Grain ID. Dado que los granos colocados mediante esta estrategia se registran en el directorio de granos, normalmente no tiene un efecto notable este cambio en la decisión de ubicación a medida que cambia la pertenencia.
Configure esta estrategia de selección de ubicación agregando el HashBasedPlacementAttribute a la clase de grano.
Colocación en función del recuento de activación
Esta estrategia de colocación intenta colocar nuevas activaciones de grano en el servidor menos cargado en función del número de granos ocupados recientemente. Incluye un mecanismo en el que todos los servidores publican periódicamente su recuento total de activación en todos los demás servidores. Después, el director de selección de ubicación selecciona un servidor previsto para tener las menos activaciones examinando el recuento de activación notificado más recientemente y predice el recuento actual en función de las activaciones recientes realizadas por el director de selección de ubicación en el servidor actual. El director selecciona varios servidores aleatoriamente al realizar esta predicción para evitar que varios servidores independientes sobrecarguen el mismo servidor. De forma predeterminada, se seleccionan dos servidores aleatoriamente, pero este valor se puede configurar a través de ActivationCountBasedPlacementOptions.
Este algoritmo se basa en la tesis The Power of Two Choices in Randomized Load Balancing de Michael David Mitzenmacher. También se usa en Nginx para el equilibrio de carga distribuido, como se describe en el artículo NGINX y el "Power of Two Choices" Load-Balancing Algorithm.
Configure esta estrategia de selección de ubicación agregando el ActivationCountBasedPlacementAttribute a la clase de grano.
Asignación de trabajadores sin estado
La colocación de trabajos sin estado es una estrategia especial de colocación que utilizan los granos de trabajo sin estado. Esta ubicación funciona casi de forma idéntica a PreferLocalPlacement, excepto que cada servidor puede tener varias activaciones del mismo grano y el grano no está registrado en el directorio de granos, ya que no es necesario.
Configure esta estrategia de selección de ubicación agregando el StatelessWorkerAttribute a la clase de grano.
Asignación en silo basada en roles
Se trata de una estrategia de colocación determinista que coloca granos en silos con un rol específico. Configure esta estrategia de selección de ubicación agregando el SiloRoleBasedPlacementAttribute a la clase de grano.
Elegir una estrategia de colocación
La elección de la estrategia de colocación de grano adecuada, más allá de los valores predeterminados Orleans , requiere supervisión y evaluación. La elección debe basarse en el tamaño y la complejidad de la aplicación, las características de la carga de trabajo y el entorno de implementación.
La colocación aleatoria se basa en la ley de números grandes, por lo que suele ser un buen valor predeterminado para cargas impredecibles distribuidas en muchos granos (10 000 o más).
La colocación basada en recuento de activación también tiene un elemento aleatorio, que se basa en el principio Power of Two Choices. Se trata de un algoritmo usado habitualmente para el equilibrio de carga distribuido y se usa en equilibradores de carga populares. Los silos publican con frecuencia estadísticas de tiempo de ejecución a otros silos del clúster, entre los que se incluyen:
- Memoria disponible, memoria física total y uso de memoria.
- Uso de CPU.
- Recuento total de activación y recuento de activación activa reciente.
- Una ventana deslizante de activaciones activas en los últimos segundos, a veces denominada conjunto de activaciones en funcionamiento.
A partir de estas estadísticas, actualmente solo se usan recuentos de activación para determinar la carga en un silo determinado.
En última instancia, experimente con diferentes estrategias y supervise las métricas de rendimiento para determinar la mejor opción. Seleccionar la estrategia adecuada de colocación de granos optimiza el rendimiento, la escalabilidad y la rentabilidad de las aplicaciones Orleans.
Configurar la estrategia de ubicación predeterminada
Orleans A partir de la versión 9.2, Orleans utiliza la colocación optimizada de recursos de forma predeterminada. Invalide la estrategia de selección de ubicación predeterminada mediante el registro de una implementación de PlacementStrategy durante la configuración.
Para revertir al comportamiento de selección aleatoria anterior:
siloBuilder.Services.AddSingleton<PlacementStrategy, RandomPlacement>();
Para usar una estrategia de selección de ubicación personalizada:
siloBuilder.Services.AddSingleton<PlacementStrategy, MyPlacementStrategy>();
Orleans utiliza la colocación aleatoria a menos que se anule el valor predeterminado. Invalide la estrategia de selección de ubicación predeterminada mediante el registro de una implementación de PlacementStrategy durante la configuración:
siloBuilder.Services.AddSingleton<PlacementStrategy, MyPlacementStrategy>();
Orleans utiliza la colocación aleatoria a menos que se anule el valor predeterminado. Invalide la estrategia de selección de ubicación predeterminada mediante el registro de una implementación de PlacementStrategy durante la configuración:
siloBuilder.ConfigureServices(services =>
services.AddSingleton<PlacementStrategy, MyPlacementStrategy>());
Configuración de la estrategia de colocación de un grano
Configure la estrategia de selección de ubicación para un tipo de grano agregando el atributo adecuado a la clase de grano. Los atributos pertinentes se especifican en las secciones de estrategias de selección de ubicación anteriores.
Ejemplo de estrategia de colocación personalizada
En primer lugar, defina una clase que implemente la IPlacementDirector interfaz, lo que requiere un único método. En este ejemplo, supongamos que se define una función GetSiloNumber que devuelve un número de silo en función del Guid del grano que se va a crear.
public class SamplePlacementStrategyFixedSiloDirector : IPlacementDirector
{
public Task<SiloAddress> OnAddActivation(
PlacementStrategy strategy,
PlacementTarget target,
IPlacementContext context)
{
var silos = context.GetCompatibleSilos(target).OrderBy(s => s).ToArray();
int silo = GetSiloNumber(target.GrainIdentity.PrimaryKey, silos.Length);
return Task.FromResult(silos[silo]);
}
}
A continuación, defina dos clases para permitir la asignación de clases de grano a la estrategia:
[Serializable]
public sealed class SamplePlacementStrategy : PlacementStrategy
{
}
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public sealed class SamplePlacementStrategyAttribute : PlacementAttribute
{
public SamplePlacementStrategyAttribute() :
base(new SamplePlacementStrategy())
{
}
}
A continuación, etiquete las clases de grano destinadas a usar esta estrategia con el atributo :
[SamplePlacementStrategy]
public class MyGrain : Grain, IMyGrain
{
// ...
}
Por último, registre la estrategia al compilar :ISiloHost
private static async Task<ISiloHost> StartSilo()
{
var builder = new HostBuilder(c =>
{
// normal configuration methods omitted for brevity
c.ConfigureServices(ConfigureServices);
});
var host = builder.Build();
await host.StartAsync();
return host;
}
private static void ConfigureServices(IServiceCollection services)
{
services.AddPlacementDirector<SamplePlacementStrategy, SamplePlacementStrategyFixedSiloDirector>();
}
Para ver un segundo ejemplo simple que muestra el uso posterior del contexto de ubicación, consulte PreferLocalPlacementDirector en el Orleans repositorio de origen.
Filtrado de ubicación
El filtrado de selección de ubicación permite filtrar qué silos son aptos para la colocación de granos antes de que la estrategia de selección de ubicación seleccione un destino. Esto funciona junto con las estrategias de selección de ubicación y permite escenarios como:
- Colocación con reconocimiento de zona: coloque granos en silos en la misma zona de disponibilidad.
- Despliegues por niveles: dirigir determinados granos a silos de nivel premium o estándar
- Afinidad de hardware: colocar granos de alta carga computacional en silos con capacidades específicas
Orleans proporciona filtros integrados basados en metadatos de silo, incluido el filtrado por coincidencia obligatoria y por coincidencia preferida. También puede implementar filtros de selección de ubicación personalizados.
Para obtener información detallada sobre cómo configurar metadatos de silo, usar filtros integrados e implementar filtros personalizados, consulte Filtrado de ubicación de granos.
Repartición de activación
La repartición de activación es una característica que optimiza automáticamente la localidad de llamada de granos mediante la migración de activaciones de granos para estar más cerca de los granos con los que se comunican con más frecuencia. Esta característica puede mejorar significativamente el rendimiento reduciendo los saltos de red para la comunicación entre granos.
Advertencia
La repartición de activación es una característica experimental. Use la #pragma warning disable ORLEANSEXP001 directiva o agregue <NoWarn>ORLEANSEXP001</NoWarn> al archivo de proyecto para suprimir la advertencia experimental.
Cómo funciona
El reparticionador supervisa patrones de comunicación de grano a grano y crea un gráfico de "bordes" que representa la frecuencia con la que se comunican los granos. Analiza periódicamente este gráfico para identificar oportunidades para mejorar la localidad mediante la migración de granos a silos donde se encuentran sus asociados de comunicación, a la vez que mantiene una distribución aproximadamente igual de activaciones entre silos.
Características clave:
- Seguimiento probabilístico: usa una estructura de datos probabilística para realizar un seguimiento de los vínculos de comunicación más pesados mientras conserva la memoria.
- Distribución equilibrada: intentos de mantener equilibrados los recuentos de activación entre los silos
- Período de recuperación: después de migrar granos, un silo espera antes de participar en otra ronda de repartición para permitir que el sistema se estabilice
- Filtro de anclaje: identifica granos bien particionados (los que ya están cerca de sus asociados de comunicación) y evita migrarlos.
Habilitar la repartición de activación
Habilite la repartición de activación mediante el método de extensión AddActivationRepartitioner.
#pragma warning disable ORLEANSEXP001
siloBuilder.AddActivationRepartitioner();
#pragma warning restore ORLEANSEXP001
Opciones de configuración
Configure el reparticionador mediante ActivationRepartitionerOptions:
#pragma warning disable ORLEANSEXP001
siloBuilder.AddActivationRepartitioner();
siloBuilder.Configure<ActivationRepartitionerOptions>(options =>
{
options.MaxEdgeCount = 10_000;
options.MinRoundPeriod = TimeSpan.FromMinutes(1);
options.MaxRoundPeriod = TimeSpan.FromMinutes(2);
options.RecoveryPeriod = TimeSpan.FromMinutes(1);
options.AnchoringFilterEnabled = true;
});
#pragma warning restore ORLEANSEXP001
| Opción | Tipo | Predeterminado | Description |
|---|---|---|---|
MaxEdgeCount |
int |
10 000 | Número máximo de bordes (vínculos de comunicación de grano) para realizar el seguimiento. Los valores más altos mejoran la precisión, pero usan más memoria. No se recomiendan los valores inferiores a 100. |
MaxUnprocessedEdges |
int |
100 000 | Número máximo de bordes sin procesar que se van a almacenar en la memoria intermedia. Los bordes más antiguos se descartan cuando se supera el límite. |
MinRoundPeriod |
TimeSpan | 1 minuto | Tiempo mínimo entre las rondas de repartición. |
MaxRoundPeriod |
TimeSpan | 2 minutos | Tiempo máximo entre las rondas de repartición. El tiempo real es aleatorio entre min y max. Para obtener resultados óptimos, apunte a aproximadamente 10 segundos multiplicado por el número máximo de silo. |
RecoveryPeriod |
TimeSpan | 1 minuto | Tiempo de espera de un silo después de una ronda de reparticionamiento antes de participar en otra. Debe ser menor o igual que MinRoundPeriod. |
AnchoringFilterEnabled |
bool |
true |
Permite el seguimiento de granos bien particionados para evitar migrarlos innecesariamente. Reduce ligeramente la precisión, pero mejora la eficacia. |
ProbabilisticFilteringMaxAllowedErrorRate |
double |
0,01 | Tasa máxima de errores para el filtro probabilístico (0,1% a 1 intervalo de%). Solo se aplica cuando AnchoringFilterEnabled es true. |
Consideraciones sobre el rendimiento
-
Tiempo de convergencia: el reparticionador mejora gradualmente la localidad en varias rondas. Si el sistema no está convergendo lo suficientemente rápido, considere la posibilidad de aumentar
MaxEdgeCount. -
Uso de memoria: los valores más altos
MaxEdgeCountconsumen más memoria. La estructura de datos probabilística ayuda a limitar el uso de memoria, a la vez que mantiene una precisión razonable. -
Estabilidad del clúster: evite valores muy cortos
RecoveryPeriodpara evitar una migración de grano excesiva. - Patrones de carga de trabajo: funciona mejor con cargas de trabajo que tienen patrones de comunicación estables. Es posible que las cargas de trabajo muy dinámicas vean menos ventajas.
Cuándo usar la redistribución de activación
Considere la posibilidad de habilitar la repartición de activación cuando:
- Los granos tienen patrones de comunicación predecibles (el grano A llama con frecuencia al grano B)
- Tiene un clúster de varios silos en el que la latencia de red entre los silos es significativa
- La prueba comparativa muestra un rendimiento mejorado con la característica habilitada
Evite la repartición de activación cuando:
- Los granos se comunican con muchos granos diferentes aleatoriamente
- El clúster es pequeño (2-3 silos), donde la sobrecarga de migración puede superar las ventajas
- Los granos se desactivan y reactivan con frecuencia, lo que impide que se produzcan patrones estables
La repartición de activación se introdujo como una característica experimental en Orleans 8.2. Para obtener la documentación más reciente sobre esta funcionalidad, consulte la Orleans documentación de la versión 9.0 o superior.
La repartición de activación está disponible a partir de la versión Orleans 8.2 y posteriores.
Reequilibrio de activación
El reequilibrio de activación es una característica de todo el clúster que redistribuye automáticamente las activaciones de grano en los silos para optimizar tanto el uso de memoria como el saldo del recuento de activación . A diferencia de la repartición de activación (que optimiza la localidad de comunicación), el reequilibrio se centra en mantener los silos cargados uniformemente en términos de consumo de recursos.
Advertencia
El reequilibrio de activación es una característica experimental. Use la #pragma warning disable ORLEANSEXP002 directiva o agregue <NoWarn>ORLEANSEXP002</NoWarn> al archivo de proyecto para suprimir la advertencia experimental.
Cómo funciona
El reequilibrador de activación se ejecuta como un componente único que coordina el reequilibrio en el clúster.
- Colección de estadísticas: Cada silo publica periódicamente su uso de memoria y el recuento de activación al reequilibrador.
- Cálculo de entropía: el reequilibrio calcula la "entropía" actual del clúster, una medida de la distribución uniforme de los recursos. La entropía máxima significa equilibrio perfecto.
- Decisiones de migración: cuando la entropía está por debajo del destino, el reequilibrio identifica silos "pesados" (recuento elevado de memoria/activación) y silos "ligeros", entonces indica a los silos pesados que migren las activaciones a silos ligeros.
- Ejecución basada en sesión: el reequilibrio se ejecuta en sesiones con varios ciclos. Una sesión finaliza cuando el clúster alcanza el equilibrio aceptable o cuando no se detecta ninguna mejora adicional.
El algoritmo considera tanto el consumo de memoria como los recuentos de activación, utilizando la media armónica del uso de memoria para calcular la distribución de activación ideal. Esto significa que los silos con menos memoria disponible reciben menos activaciones.
Habilitación del reequilibrio de activación
Habilite el reequilibrio de activación mediante el método de extensión AddActivationRebalancer.
#pragma warning disable ORLEANSEXP002
siloBuilder.AddActivationRebalancer();
#pragma warning restore ORLEANSEXP002
Opciones de configuración
Configure el reequilibrio mediante ActivationRebalancerOptions:
#pragma warning disable ORLEANSEXP002
siloBuilder.AddActivationRebalancer();
siloBuilder.Configure<ActivationRebalancerOptions>(options =>
{
options.RebalancerDueTime = TimeSpan.FromSeconds(60);
options.SessionCyclePeriod = TimeSpan.FromSeconds(15);
options.MaxStagnantCycles = 3;
});
#pragma warning restore ORLEANSEXP002
| Opción | Tipo | Predeterminado | Description |
|---|---|---|---|
RebalancerDueTime |
TimeSpan | 60 segundos | Retraso inicial antes de que se inicie la primera sesión de reequilibrio después de que el clúster se estabilice. |
SessionCyclePeriod |
TimeSpan | 15 segundos | Tiempo entre ciclos de reequilibrio dentro de una sesión. Debe ser al menos dos veces el intervalo de publicación de estadísticas. |
MaxStagnantCycles |
int |
3 | Máximo de ciclos consecutivos sin mejora antes de que finalice una sesión. |
EntropyQuantum |
double |
0.0001 | El cambio mínimo de entropía se considera una mejora. Los valores más pequeños hacen que el reequilibrio sea más sensible. |
AllowedEntropyDeviation |
double |
0.0001 | Umbral base para la desviación aceptable de la entropía máxima. Cuando la desviación está por debajo de este umbral, el clúster se considera equilibrado. |
ScaleAllowedEntropyDeviation |
bool |
true |
Si se va a escalar dinámicamente la desviación permitida en función del tamaño del clúster y el recuento de activación. |
CycleNumberWeight |
double |
0,1 | Factor de peso para el número de ciclo en el cálculo de la tasa de migración. Los valores más altos aceleran la migración en ciclos posteriores. |
SiloNumberWeight |
double |
0,1 | Factor de peso para el recuento de silos en el cálculo de la tasa de migración. Los valores más elevados provocan que más activaciones se migren en clústeres de mayor tamaño. |
ActivationMigrationCountLimit |
int |
int. MaxValue | Número máximo de activaciones que se van a migrar en un solo ciclo. Usar para controlar la velocidad de migración. |
Requisitos
- Tamaño mínimo del clúster: requiere al menos 2 silos para funcionar.
- Estadísticas de memoria: cada silo debe notificar el uso de memoria válido (distinto de cero). Si algún silo informa de memoria cero, se omiten los ciclos de reequilibrio.
-
Migrabilidad de granos: los granos marcados con
[Immovable]o[Immovable(ImmovableKind.Rebalancer)]se excluyen del reequilibrio.
Cuándo usar el reequilibrio de activación
Considere la posibilidad de habilitar el reequilibrio de activación cuando:
- El clúster tiene silos con un uso desigual de recursos (algunos silos funcionan con carga alta mientras que otros están infrautilizados).
- Tiene activaciones de grano de larga duración que pueden acumularse de forma desigual con el tiempo.
- Los patrones de carga de trabajo provocan desequilibrios de activación que las estrategias de colocación por sí solas no pueden abordar
Evite el reequilibrio de activación cuando:
- El clúster es pequeño (2-3 silos), donde la sobrecarga puede superar las ventajas
- Los granos tienen una duración muy corta y se desactivan rápidamente
- Ya usa la repartición de activación y quiere evitar migraciones en conflicto, aunque las dos características pueden coexistir, ya que el reparticionador ajusta su comportamiento en función de los informes de reequilibrio.
Comparación con la repartición de activación
| Característica | Rebalanceo de activación | Repartición de activación |
|---|---|---|
| Optimizaciones para | Equilibrio en el recuento de memoria y activaciones | Localidad de comunicación |
| Ámbito | Coordinación en todo el clúster | Coordinación de silos por pares |
| Identificador experimental | ORLEANSEXP002 |
ORLEANSEXP001 |
| Desencadenador de migración | Desequilibrio de recursos | Patrones de comunicación |
Ambas características se pueden habilitar simultáneamente. El reparticionador ajusta automáticamente su tolerancia en función del desequilibrio del clúster notificado por el reequilibrador.
El reequilibrio de activación está disponible en Orleans 10.0 y versiones posteriores.