rp-dag
Propósito
Posee los activadores del flujo de trabajo y el registro de ejecución. No ejecuta nada.
Límite de responsabilidad
Aquí pertenecen dos cosas y nada más:
- Activadores — «cuando aparezca este tema del bus, ejecuta ese flujo de trabajo». Configuración del sistema: decenas de filas que mantiene un operador, conservadas en su totalidad en la memoria del tiempo de ejecución en lugar de consultarse.
- El registro de ejecución — un árbol de lo que hizo una ejecución. El tiempo de ejecución lo escribe mientras se ejecuta el script: un nodo se abre antes de que se ejecute su cuerpo y se cierra cuando termina, de modo que una ejecución en curso muestra el nodo en el que se encuentra.
El catálogo de flujos de trabajo no es propiedad de este servicio. Ptah coloca los descriptores de la Solution activa en el entorno de este servicio (, WORKFLOWS, WORKFLOW_DIGESTS) y MODULE_PROXY los vuelve a publicar para el tiempo de ejecución y la interfaz de usuario. Los bytes de origen permanecen detrás de Ptah-proxy.listAvailableWorkflows
El registro lo escribe el tiempo de ejecución, no este servicio
Nada de aquí escribe una entrada de registro. El tiempo de ejecución le da formato, lo coloca en Valkey bajo una clave que compone por sí mismo y, posteriormente, entrega las claves —nunca las entradas—. convierte cada clave en una ubicación de almacenamiento e indica al almacenamiento que recoja la entrada; el almacenamiento lee directamente de la caché, por lo que una entrada cruza el transporte una sola vez, como bytes que nadie vuelve a codificar.commitLog
workflow thread ─► queue ─► log writer ─► valkey
│
└─ commitLog([keys]) ─► rp-dag ─► storage reads valkey
│
◄──── committed ────────────────────────┘
└─ delete the committed keys
Eso es lo que mantiene el registro fuera de la ruta crítica del flujo de trabajo: un nodo le cuesta al tiempo de ejecución un añadido a la cola y nada más. También significa que el registro es, por construcción, de mejor esfuerzo —una entrada puede descartarse bajo presión y un lote puede confirmarse dos veces después de un fallo. Las claves se derivan de la ejecución y de la secuencia del nodo, por lo que la segunda confirmación es una reescritura y no un duplicado.
Las claves proceden del tiempo de ejecución por esa razón: un número asignado por este servicio costaría un viaje de ida y vuelta por nodo y no sería reproducible después de un reinicio.
— la ejecucióndag:log:<executionId>:exec— uno de sus nodos, con relleno de ceros hasta seis dígitosdag:log:<executionId>:n:<seq>
deriva la ubicación de almacenamiento a partir de la clave y rechaza cualquier cosa fuera del prefijo commitLog, por lo que una clave constituye toda la autoridad que transporta la llamada.dag:log:
El registro es un árbol
exec:<id> la ejecución
node:<id>:<seq> sus nodos, en el orden en que se abrieron
Un nodo que delegó mediante contiene el id de la ejecución secundaria, y la secundaria es una ejecución ordinaria con sus propios nodos. rt.sub recorre ese vínculo en profundidad y devuelve el resultado plano, con cada fila etiquetada con su executionTree —de modo que un cliente representa el árbol aplicando sangría y nada más—. No se necesita un índice de padres: el vínculo es el nodo que lo creó.depth
Las secuencias llevan relleno de ceros en la clave, porque el almacén KV devuelve un rango de prefijo en orden lexicográfico y ese orden debe ser el orden en que se ejecutaron los nodos. El tiempo de ejecución aplica el mismo ancho cuando compone la clave de caché; ambos anchos forman un único contrato.
La retención es un límite de ejecuciones ( de forma predeterminada), aplicado en cada centésima apertura. El registro sirve para diagnósticos, no es un archivo histórico.5000
Los cambios de activadores llegan al tiempo de ejecución mediante el bus
Crear, cambiar o eliminar un activador publica . El tiempo de ejecución se suscribe a ese tema junto con el propio de los activadores, por lo que una edición está activa para el siguiente evento en lugar de tener que esperar a que transcurra un intervalo de sondeo. La publicación es de mejor esfuerzo —un bus caído no debe hacer fallar la edición de un operador— y la actualización periódica del tiempo de ejecución sigue siendo el mecanismo de respaldo.dag.triggers.changed
Dependencias directas del módulo
- g-bus — para anunciar un cambio de activador
Pertenencia a una Solution
- No incluido en una solución predefinida
Origen
modules/repositories/automation/rp-dag