Objetivo:
La motivación detrás de este blog es brindar una descripción general de las mejores prácticas en lo que respecta al procesamiento de trabajos en tiempo real dentro de los servicios de datos. Para Batch Jobs, una gran cantidad de métricas de ajuste de rendimiento, las mejores prácticas están fácilmente disponibles y se pueden implementar con las referencias, mientras que aquí las mejores prácticas de optimización de trabajos en tiempo real se han anotado en base a la experiencia del mundo real y la investigación de varios recursos de SAP.
Antes de entrar en las mejores prácticas reales, consejos y trucos, echemos un breve vistazo al funcionamiento, los componentes, el diseño del trabajo, los modelos, etc. de los trabajos en tiempo real de SAP Data Services.
SAP Data Services puede recibir mensajes de sistemas ERP o aplicaciones web y luego puede responder en poco tiempo con los datos de un caché de datos o cualquier otra aplicación
El procesamiento de datos en un trabajo en tiempo real puede requerir el uso de un caché de datos. El trabajo en tiempo real puede agregar datos adicionales al mensaje proveniente de una memoria caché de datos o el trabajo en tiempo real puede cargar los datos del mensaje en la memoria caché de datos.
En el momento en que un trabajo en tiempo real recibe un mensaje, es el servidor de acceso el que enruta el mensaje a un proceso de espera que luego realiza un conjunto de operaciones con respecto al tipo de mensaje.
Cuando el trabajo en tiempo real devuelve una respuesta, nuevamente el servidor de acceso envía una respuesta a la aplicación ascendente.
Consulte el siguiente diagrama para comprender mejor el funcionamiento de los trabajos en tiempo real de servicios de datos
Un trabajo en tiempo real puede contener un solo flujo de datos, múltiples flujos de datos, flujos de trabajo, scripts, condicionales, bucles while, etc.
Tanto los flujos de datos únicos como múltiples pueden contener los siguientes objetos:
En múltiples flujos de datos se puede incluir un objeto adicional:
Además, IDOC también se puede utilizar para crear trabajos en tiempo real.
Modelo de flujo de datos único:
Como sugiere el nombre con este modelo, podemos crear un trabajo en tiempo real utilizando un flujo de datos singular. Solo incluye un origen de mensaje único y un destino de mensaje único.
Modelo de flujo de datos múltiples
El modelo de flujo de datos múltiples le permite crear un trabajo en tiempo real utilizando más de un flujo de datos en el procesamiento en tiempo real.
Mediante el uso de varios flujos de datos, los datos de cada mensaje se procesan por completo en un flujo de datos inicial antes de pasar al procesamiento cuando se inician los flujos de datos posteriores.
Por ejemplo, si los datos tienen 10 elementos, los 10 deben pasar por el primer flujo de datos a una tabla de preparación o una tabla de memoria antes de pasar al flujo de datos subsiguiente. Esto le permitirá tener más control y le permitirá recopilar todos los datos en cualquier momento.
Ahora, puede preguntarse por qué en tiempo real en lugar de procesamiento de trabajos por lotes.
Ahora veamos algunas de las mejores prácticas con trabajos en tiempo real:
Los almacenes de datos de memoria son ventajosos para procesar trabajos en tiempo real que manejan pequeñas cantidades de datos, ya que permiten el acceso instantáneo a los datos.
Las tablas de memoria sirven como modelos para almacenar temporalmente datos intermedios. Almacenan en caché datos de archivos de datos jerárquicos y tablas de bases de datos relacionales. SAP Data Services almacena estos datos en caché en la memoria, lo que garantiza el acceso inmediato sin necesidad de acceder a los datos de origen originales.
El repositorio almacena esquemas de tablas de memoria en un almacén de datos de memoria, que difiere de un almacén de datos de base de datos típico que se conecta a un adaptador, una base de datos o una aplicación.
Ventajas del almacén de datos de memoria:
Cada vez que se realiza una solicitud de servicio web, se reenvía a la capa de servicios web de servicios de datos con la ayuda de los protocolos HTTP/SOAP y el servicio web los enruta hacia el servidor de acceso. Sin embargo, cuando se utilizan las API de un cliente de mensajes, las solicitudes se envían directamente al servidor de acceso, lo que evita la capa de servicios web y, a cambio, mejora el rendimiento.
Es importante que los servicios en tiempo real estén configurados y, para cada servicio, se deben definir los servidores de trabajo que manejarán las solicitudes y la cantidad de proveedores de servicios (procesos AL_ENGINE) que se crearán para atender las solicitudes en cada servidor de trabajo. .
La gestión adecuada de las instancias mínimas y máximas es necesaria para lograr la escalabilidad del servicio en cada servidor de trabajo. Es importante tener en cuenta que DOP no escala los trabajos en tiempo real, pero sí la cantidad de proveedores de servicios (procesos). Por lo tanto, es crucial equilibrar las cargas con el consumo de memoria por implementación física y la cantidad de servicios admitidos por cada servidor de trabajo.
Se sugiere utilizar un servidor de trabajo separado (tanto físico como virtual) para el procesamiento por lotes y en tiempo real para asegurarse de que se cumplan los SLA para las solicitudes en tiempo real.
La cantidad de instancias Mín./Máx. que establece al crear servicios en tiempo real determina cómo se ampliará el servicio. Cada instancia crea un proceso AL_ENGINE en el servidor, y cada proceso maneja una solicitud de mensaje en tiempo real a la vez. Para optimizar el rendimiento, es importante ajustar las instancias Mín./Máx. según la cantidad de proveedores de servicios que está configurando en cada servidor de trabajo y la cantidad de CPU/núcleos disponibles. Comenzar con un aumento en las instancias Min/Max a ‘2’ puede ser un buen punto de partida.
Es importante monitorear las estadísticas en la consola de administración, como los tiempos de respuesta promedio y las longitudes de las colas, para garantizar que las solicitudes no se acumulen en las colas y que los tiempos de respuesta cumplan con el SLA requerido. Vale la pena señalar que la primera solicitud de mensaje a través de un proceso AL_ENGINE determinado puede demorar más que las solicitudes posteriores debido a la inicialización, que solo puede ocurrir con la primera solicitud. Esto puede resultar en tiempos de solicitud sesgados en la consola de administración.
En preparación para la puesta en marcha, es crucial tener un panorama que se parezca mucho a PROD y tenga un volumen de nivel de PROD, lo que nos permitirá revisar las métricas de rendimiento.
Vigile el consumo de memoria en el servidor, ya que cada proceso AL_ENGINE para trabajos en tiempo real puede utilizar una cantidad sustancial de memoria, incluso para trabajos simples.
Asegúrese de tener suficiente memoria para todos los servicios y la cantidad prevista de proveedores de servicios (configuración Máx./Mín.) en un servidor de trabajo determinado.
Para el equilibrio de carga, debemos tener dos servidores y podemos aumentar la capacidad de los servidores si encontramos problemas de memoria o CPU. Si es necesario, podemos ajustar los parámetros de nivel de trabajo o descargar más procesamiento a la base de datos examinando el diseño del trabajo.
Para el dimensionamiento de los motores, se puede utilizar la siguiente fórmula:
supongamos m = Número de motores:
m*consumo de memoria por motor = consumo total de RAM
m*Uso de CPU por motor = consumo total de CPU
Tenemos que considerar los siguientes factores para determinar el valor óptimo para el tamaño de recuperación de la matriz:
Si su entorno informático es potente, es decir, las máquinas que ejecutan el servidor de tareas, las bases de datos relacionadas y las conexiones son rápidas, intente aumentar el tamaño de recuperación de la matriz. Sin embargo, se recomienda probar el rendimiento de sus trabajos para encontrar la mejor configuración.
También es importante tener en cuenta que una configuración de recuperación de matriz más alta consumirá más memoria de procesamiento proporcionalmente a la longitud de los datos en cada fila y la cantidad de filas en cada recuperación.
Al crear flujos de datos para trabajos en tiempo real, es importante seguir ciertas pautas.
En primer lugar, si está uniendo una fuente en tiempo real con una tabla, los datos en tiempo real se incluirán como el bucle externo de la unión. Al unir más de una fuente complementaria, puede determinar qué tabla se incluye en el siguiente bucle más externo utilizando rangos de unión.
En segundo lugar, evite almacenar en caché datos de fuentes secundarias en trabajos en tiempo real, a menos que sean estáticos, ya que los datos se leerán cuando se inicie el trabajo y no se actualizarán durante el tiempo de ejecución.
Además, si no se pasan filas al destino XML, el trabajo devuelve una respuesta vacía al servidor de acceso y debe proporcionar instrucciones al usuario para manejar este escenario.
Finalmente, para evitar descartar filas, estructure los formatos de origen y destino del mensaje de modo que una «fila» sea igual a un mensaje, utilizando el Modelo de datos relacionales anidados (NRDM) para estructurar cualquier cantidad de datos en una sola «fila» incorporando otros tablas dentro de la columna
Gracias por leer el blog hasta aquí. Espero que el blog haya sido informativo y pueda ser útil para cualquier persona que necesite las mejores prácticas de trabajo en tiempo real de servicios de datos sugeridas.
Siéntete libre de hacer cualquier pregunta o déjame saber en los comentarios si te ayudó. Haré todo lo posible para responder.
¡Gracias!
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073