Esta guía describe las mejores prácticas para diseñar aplicaciones de Tulip de alto rendimiento que se escalen de forma eficiente en entornos de producción. Seguir estas recomendaciones te ayudará a garantizar que tus aplicaciones sigan siendo receptivas y estables, incluso a medida que tu operación se amplíe.
:::(Información) (NOTA)
Las recomendaciones de este artículo se aplican siempre que tus soluciones incluyan el uso de funciones de conector con la API de Tulip. Entre ellas se incluyen:
- ejecuciones de funciones de conector o « API Call» en disparadores a nivel de aplicación (temporizador, botón, entrada de paso, por ejemplo)
- Llamadas a la API desde Node-RED
- Scripts con llamadas a la API procedentes de fuera de las soluciones de Tulip
- Escrituras en tablas de Tulip mediante la API de tablas desde otros sistemas
:::
¿Qué es un disparador de alta frecuencia?
Un disparador de alta frecuencia se ejecuta con una frecuencia superior a cada 5 segundos (más rápido que 0,2 Hz). Los eventos de atributos de máquina, los eventos de dispositivos y los disparadores de temporizador son las fuentes más comunes de ejecución de alta frecuencia.
Tulip recomienda que los desencadenantes no se ejecuten a un ritmo superior a 5 segundos (0,2 Hz) para mantener el rendimiento y la capacidad de respuesta de la aplicación.
Impacto en la cola de desencadenantes
Los disparadores de la aplicación se ejecutan de arriba abajo en una cola secuencial de un solo subproceso, conocida como cola de disparadores.

Hay dos factores que determinan si la cola funciona de manera eficiente:
- Tasa de entrada en la cola: la frecuencia con la que se añaden eventos de activador a la cola
- Tasa de salida de la cola: la rapidez con la que la lógica del disparador completa su ejecución
Cuando los desencadenantes entran en la cola más rápido de lo que salen, la cola se satura. Una saturación prolongada de la cola de desencadenantes provoca latencia en la aplicación y, en algunos casos, la pérdida de eventos de desencadenante.
Piensa en la frecuencia de los desencadenantes como si fuera el tráfico de una autopista. Si entran demasiados coches en la autopista en un breve periodo de tiempo, el tráfico se ralentiza. Para evitar la acumulación, los coches deben entrar a un ritmo que la autopista pueda soportar.
Frecuencia combinada
La tasa combinada de todos los eventos de activación de una aplicación determina la tasa global de entrada en la cola. Cada evento de activación que configures se suma a esta tasa combinada.
Consulta la tabla siguiente para ver ejemplos de frecuencia combinada:
| Configuración | Frecuencia combinada |
|---|---|
| 1 atributo de máquina que se actualiza cada 1 segundo | 1 Hz |
| 5 atributos de la máquina que se actualizan cada 1 segundo | 5 Hz |
| 1 atributo de la máquina (1 s) + 1 temporizador (2 s) | 1,5 Hz |
Escala de velocidad de la lógica de activación
El tipo de lógica de activación determina la rapidez con la que los disparadores salen de la cola. La lógica que requiere comunicación en la nube, transiciones o respuestas de sistemas externos tarda mucho más en ejecutarse que las operaciones locales.
La tabla siguiente describe la velocidad de los diferentes tipos de lógica.
For high-frequency triggers, aim to use only logic rated Very fast or Fast.
| Velocidad | Tipo de lógica | Ejemplos |
|---|---|---|
| Muy rápida | Lógica de aplicación local | Lectura o actualización de datos locales (p. ej., variables) |
| Rápido | Datos en la nube almacenados en caché | Lectura de registros de tablas ya cargados |
| Medio | Tulip Cloud | Carga, actualización o creación de registros de tabla; lectura o actualización del estado de la máquina |
| Lento | Tulip Cloud | Agregaciones y consultas de tablas |
| Muy lento | Sistemas externos | Funciones del conector |
There is currently no easily accessible app performance log available for evaluating trigger performance. App performance can only be inferred through step times in completion records, which is useful in cases where steps involve extensive looping.
Factores técnicos que afectan al rendimiento de los desencadenantes
- Hardware local: la lógica de los disparadores se ejecuta en el hardware local, por lo que las especificaciones del dispositivo influyen de manera decisiva en la rapidez con la que los disparadores se completan y salen de la cola. Para conocer las especificaciones de los dispositivos, consulta «Dispositivos recomendados para Tulip Player».
- Dependencias externas: las dependencias externas incluyen la conectividad a la nube, la latencia de la red local y el tiempo de respuesta de sistemas externos como los sistemas de planificación de recursos empresariales (ERP).
- Dispositivos conectados a través de dispositivos Tulip Edge: las aplicaciones de Tulip dependen de la conectividad a la nube, lo que puede introducir latencia. Por ejemplo, un controlador de par conectado a un dispositivo Edge sigue comunicándose con Tulip Player a través de los servicios en la nube de Tulip. Para comprender las conexiones de los dispositivos, consulta estos diagramas de secuencia sobre las conexiones de dispositivos a través de los controladores de Tulip.
- Problemas de latencia con las funciones de conector: una respuesta lenta de un sistema (por ejemplo, un ERP) a través de una función de conector puede provocar retrasos en la aplicación, especialmente si esta recorre muchos registros y cada uno de ellos requiere una llamada a la API que puede tardar dos segundos. Para comprender las conexiones del sistema, consulta estos diagramas de secuencia sobre la conexión a sistemas empresariales.
- Latencia entre la planta de producción y la infraestructura en la nube de Tulip: para minimizar la latencia, su instancia de Tulip se encuentra en la misma zona geográfica que su planta de producción.
Recomendaciones
Evita los desencadenantes de alta frecuencia
Debes evitar los disparadores de alta frecuencia siempre que sea posible y, en su lugar, utilizar otras funciones, como las « Automation».
También puede que le interese rediseñar la arquitectura de su aplicación para que funcione a un ritmo menor. Por ejemplo:* Generación de informes de datos con menor frecuencia mediante consultas y agregaciones* Para casos de uso asíncronos, los bucles se pueden realizar mediante «Automations»* Para casos de uso síncronos, los bucles que deban realizarse de forma secuencial deben llevarse a cabo mediante «Functions»
Si debe utilizar un disparador de alta frecuencia, debe configurarlo para que solo ejecute tareas locales (por ejemplo, actualizar una variable de la aplicación). A continuación, utilice un disparador de baja frecuencia para las ejecuciones más lentas (por ejemplo, actualizar un registro de una tabla).
Si utilizas un disparador de temporizador de alta frecuencia para reaccionar rápidamente a un contexto ajeno a una aplicación de Tulip, es posible que puedas utilizar una «Tulip Machine» de «flujo de eventos» con disparadores de máquina y de dispositivo.
Uso de las API de tablas de Tulip
El uso de las API de tablas para leer o escribir varias veces por segundo puede afectar al rendimiento de tu instancia y provocar retrasos en la lectura o el almacenamiento de datos. Las recomendaciones que figuran a continuación se aplican a todos los scripts y acciones de disparador que ejecutan las API de Tulip en una instancia de Tulip:
Recomendación
- Planifica la ejecución de tu lógica para respetar los límites de frecuencia de las tablas de Tulip
- Evita las escrituras frecuentes en el mismo registro de una tabla (más de una por segundo)
Cuando se superan los umbrales, Tulip puede aplicar un límite de frecuencia y devolver el código de error 429. Los scripts deben estar preparados para gestionar los códigos de error 429 y volver a intentarlo tras un retraso.
Desencadenantes de máquina, dispositivo y temporizador
Los desencadenantes de temporizador de intervalo corto (cada 1-2 segundos) pueden sobrecargar tus aplicaciones, especialmente cuando dichos desencadenantes incluyen varias llamadas a la API (por ejemplo, escrituras en tablas o ejecuciones de funciones de conector).
Tulip no longer supports a timer trigger with <30sec frequency. For timer triggers used in an event-based architecture (i.e. a table record field changed or the current time is 7:00am), we recommend using Machines or [Automations]. Contact your Tulip representative if you have questions about this transition.
Los desencadenantes de máquina detectan los cambios en los atributos de los equipos conectados y ejecutan la lógica correspondiente. Cuando un machine attributes a envía informes con alta frecuencia o cuando se supervisan varios atributos simultáneamente, la ejecución de los desencadenantes puede superar la velocidad a la que la aplicación los procesa. Esto puede provocar una disminución del rendimiento.
Recomendación
- Limita las suscripciones a machine attribute únicamente a aquellas que sean necesarias para el paso o flujo de trabajo actual
- Separa la lógica de alta frecuencia de las operaciones en la nube y utiliza un desencadenador de menor frecuencia para gestionar las acciones dependientes de la nube
Ejemplo de escenario: Un « machine attribute » se actualiza 4 veces por segundo y es necesario realizar un seguimiento del recuento de actualizaciones en un registro de tabla. Desencadenador 1 (evento de máquina): Actualizar una variable de la aplicación con los datos de máquina entrantes. Desencadenador 2 (temporizador, cada 10 segundos): Escribir los datos acumulados en un registro de tabla
| Enfoque | Configuración | Rendimiento |
|---|---|---|
| Óptimo | El disparador de máquina incrementa la variable de la aplicación; el disparador del temporizador escribe en la tabla cada 10 segundos | Bueno (funcionamiento en la nube a 0,1 Hz) |
| Lento | El disparador de la máquina escribe directamente en la tabla en cada actualización | Deficiente (funcionamiento en la nube a 4 Hz) |
- Considera la posibilidad de utilizar automatizaciones para el procesamiento asíncrono con el fin de eliminar la carga de procesamiento de la cola de activadores. Por ejemplo, si los datos de la máquina deben procesarse pero no requieren una respuesta inmediata del operador en la sesión de la aplicación
- Utilice únicamente operaciones rápidas en los desencadenadores, como «Leer/actualizar variables de la aplicación» o «Leer registros de la tabla»
- Evalúa la arquitectura de tu aplicación y plantéate rediseñarla para que funcione a una frecuencia menor si tu caso de uso requiere supervisar muchos atributos a altas frecuencias. Otros enfoques alternativos incluyen:
- Agregar los datos a nivel de máquina o de dispositivo periférico antes de enviarlos a Tulip
- Utilizar automatizaciones para la recopilación y el procesamiento de datos
- Reducir la frecuencia de los informes en la fuente de datos
- Considera la posibilidad de utilizar controladores de Tulip Player en lugar de controladores alojados en dispositivos periféricos
- Controlador de Player de la herramienta Torque
{{snippet.¿Has encontrado lo que buscabas?}}


