Tema anterior: Ejemplos de escritura de lógica de negocios vigenteTema siguiente: Caso práctico 16: Patrones de diseño de lógica de negocios


Caso práctico 15: Métricas en clúster

Normalmente, cuando se describe un trozo determinado de software, esta descripción se puede dividir en dos partes: el QUÉ y el CÓMO. Con el QUÉ queremos hacer referencia a la descripción de lo que hace ese trozo de código. El CÓMO es cómo lo hace. Hay una tendencia a concentrarse en el QUÉ e ignorar parte del CÓMO. El motivo es sencillo y, en muchos casos, está justificado. Con ello, se reduce el acoplamiento entre los componentes y no hay que preocuparse con información que muchas veces es irrelevante. Sin embargo, en muchos casos, el coste de ignorar el CÓMO supone un mal rendimiento.

Este caso práctico trata la forma en la que el motor está calculando métricas en clúster (la respuesta a la parte del CÓMO) y describe el coste de rendimiento que implican determinadas implementaciones. También trata las diversas formas de reducir este coste mediante el cambio de la implementación.

¿Qué son las métricas en clúster?

Las métricas en clúster son métricas que incluyen en su definición un determinado grupo de recursos. Este grupo se conoce como el clúster de la métrica y cada uno de los recursos de ese grupo se conoce como un elemento de clúster. Al calcular una métrica en clúster, se realiza un cálculo separado para cada uno de esos elementos de clúster. Los cálculos para cada uno de esos elementos de clúster son similares entre ellos, excepto:

¿Cómo se calculan las métricas en clúster?

Lo más importante que hay que entender sobre el cálculo de una métrica en clúster es que todos los elementos de clúster se calculan en paralelo. Por paralelo no se quiere decir que se calculan por distintos subprocesos, sino que mientras se procesan los distintos eventos que los elementos de clúster deben manejar, los eventos se están procesando de forma secuencial y para cada evento los elementos de clúster relevantes se convocan y procesan este evento. Por ejemplo, hay muchos eventos que deberían tratar varios elementos de clúster. Hay dos formas de hacerlo:

Ejemplo: Opción 1

Para cada elemento de clúster C
     Para cada evento E que C debería manejar
          Dejar que C maneje a E

Ejemplo: Opción 2

Para cada evento E
     Para cada elemento de clúster C que maneja a E
          Dejar que C maneje a E

El motor maneja métricas en clúster mediante la Opción 2.

Otro punto importante que hay que entender es que un componente llamado Script Control realiza la ejecución de VBScript dentro de PslWriter. Hay solamente una sola instancia de este componente por cada métrica y esta instancia se reutiliza para el cálculo de los diversos elementos de clúster. Como los elementos de clúster se calculan paralelamente, como se ha mencionado antes, y el componente Script Control puede contener solamente los datos de un solo elemento de clúster en cada momento, tenemos que cambiar frecuentemente los datos dentro del componente Script Control.

Para explicar esto, se presenta a continuación un código falso más detallado que realiza el cálculo.

1-     Para cada métrica M
2-          Permitir que X sea el primer evento que no se maneja todavía por M
3-          Permitir que T sea la marca de tiempo del último estado antes de X
4-          Permitir que L sea la lista de todos los eventos registrados por M (todos los elementos de clúster) empezando por la marca de tiempo T hasta la hora actual
5-          Para cada evento E en L
6-               Para cada elemento de clúster C que maneja a E
7-                    Permitir que C sea el elemento de clúster que está cargado actualmente en Script Control
8-                    Tomar los valores de las variables globales de Script Control y almacénelas aparte para C
9-                    Tomar los valores de las variables globales guardadas aparte para C y cárguelos en Script Control
10-                    Manejar evento E

Este proceso completo de encontrar algo de tiempo de un evento que todavía no se ha tenido cuenta y realizar, a continuación, el cálculo a partir de ese punto se llama recálculo. El proceso de sustituir los valores de las variables globales (pasos 8 y 9 en el código anterior) se llama conmutación de contexto.

Los dos problemas principales que se pueden ver fácilmente en el código anterior son:

Recálculo de métricas en clúster

Conmutación de contexto