Aplicar algoritmos de procesamiento en paralelo
Puede utilizar diferentes enfoques para el procesamiento por lotes mediante algoritmos de procesamiento en paralelo. Generalmente, los desarrolladores utilizan tres tipos diferentes de procesamiento paralelo en sus diseños:
Modelado de tareas individuales: crea una tarea por lotes independiente para cada elemento de trabajo. Este enfoque funciona bien con pocos elementos de trabajo, y es mejor para la creación de dependencias entre los elementos de trabajo que para los otros procesos en paralelo. También su programación es más sencilla en comparación con los otros procesos en paralelo. El enfoque de modelado de tareas individuales no es idóneo para muchas tareas porque la sobrecarga adicional afectará al rendimiento y provocará demoras entre las tareas por lotes que se están ejecutando.
Agrupación de trabajos por lotes: utiliza un número limitado de tareas por lotes que tengan un valor de tamaño de agrupación de trabajos (el número de elementos de trabajo en cada tarea por lotes). Este enfoque funciona bien para cargas de trabajo sencillas y uniformes donde los tiempos de procesamiento son similares. En este caso, la tabla por lotes no está muy llena de tareas por lotes. El rendimiento puede incrementarse si el tamaño de la agrupación de trabajos es apropiado. Un tamaño de agrupación de trabajos que sea demasiado grande o demasiado pequeño puede provocar problemas de rendimiento. Las cargas de trabajo que no sean uniformes pueden reducir el rendimiento con este enfoque porque las tareas por lotes finalizarán su procesamiento en momentos distintos.
Top picking: crea un número limitado de tareas por lotes donde cada una de ellas selecciona y procesa el primer elemento de trabajo que esté libre. Este proceso requiere una tabla de almacenamiento provisional para almacenar elementos de trabajo desde donde se puedan procesar las tareas por lotes. Este enfoque funciona bien si la carga de trabajo no es uniforme, con tiempos de procesamiento variables. La tabla de lotes tampoco está demasiado llena con tareas por lotes que utilizan este enfoque. Si es necesario procesar varios elementos de trabajo pequeños, llevar el seguimiento de estos elementos en la tabla de almacenamiento provisional puede afectar el rendimiento.
Entre las consideraciones clave para seleccionar un enfoque se encuentran:
- Características de la carga de trabajo
- Seleccione el modelado de tareas individuales para cargas de trabajo pequeñas e interdependientes.
- Opte por la agrupación de trabajos por lotes para tareas uniformes con tiempos de procesamiento predecibles.
- Utilice la selección de principales para cargas de trabajo desiguales que requieren flexibilidad.
- Optimización del rendimiento
- Minimice los gastos generales evitando la creación innecesaria de tareas por lotes.
- Experimente con los tamaños de las agrupaciones en la agrupación por lotes para encontrar un equilibrio óptimo.
- Complejidad de la implementación
- Empiece por el modelado de tareas individuales para requisitos sencillos.
- Realice la transición a la agrupación de trabajos por lotes o a la selección de principales a medida que aumente la complejidad de la carga de trabajo.
Escenario de ejemplo
Considere el problema de que una empresa procesa pedidos de venta a diario. Los pedidos pequeños (por debajo de 1000 USD) tardan unos segundos en validarse, mientras que los pedidos grandes (por encima de los 10 000 USD) requieren una aprobación manual, que tarda varios minutos.
Una solución a este problema es utilizar la selección de principales. Utilice una tabla de almacenamiento provisional para asignar tareas dinámicamente a procesos por lotes según el tamaño y la prioridad del pedido.