Carga masiva de datos o Cómo alimentar a un pueblo chino

¿Qué es un sistema de información altamente cargado como un gran hipermercado? ¿Qué pasa si 150 millones de personas acuden al hipermercado al mismo tiempo para comprar? ¿Por qué puedes castigar a la cabeza de un hipermercado y por qué no? ¿Por qué el tiempo de carga de documentos por la noche es mucho menor que durante el día? ¿Por qué el tiempo de carga de un solo documento realmente no significa nada?

Los sistemas de información altamente cargados tienen sus propias características, que no son obvias para muchas organizaciones de proveedores. Le diremos cómo se organiza la carga masiva de documentos (y otros datos) y consideraremos en detalle esta pregunta incomprensible para muchos.

Fuente

Cuando se desarrollan sistemas de información (IS) grandes y altamente cargados, surgen tareas de carga masiva de datos. El tipo de datos no importa y depende de su área temática. Pueden ser pagos, facturas, lecturas de sensores, proyectos de adquisición, etc. La creación y el desarrollo de SIG (sistemas de información estatales) está regulada por la ley y puede suceder fácilmente que la ley requiera que las organizaciones carguen millones de documentos al sistema una vez o, lo que es más interesante, carguen millones de documentos de forma periódica, por ejemplo, mensualmente.

En nuestros proyectos (se puede leer un poco sobre el trabajo de LANIT aquí y aquí ), nos encontramos periódicamente con tales tareas y hemos desarrollado todas las soluciones necesarias. Sin embargo, las características específicas de las soluciones tienen algunas características que, como resultó, no son obvias para muchas organizaciones de proveedores. Para nuestra sorpresa, recibimos tales solicitudes e incluso quejas:

  • “Enviamos un documento para descargar, y tardó hasta 10 segundos. Por lo tanto, si nuestra organización necesita cargar 100 mil documentos, ¡nos tomará 100 000 * 10/3600 = 277 horas!
  • "Cargamos, cargamos documentos, pero nada se carga en el sistema".

El hecho de que cargar un documento en un sistema de información puede llevar 10 segundos no dice nada sobre el sistema en sí mismo. Este indicador no tiene mucho sentido si hablamos de sistemas de colas. A continuación, le diremos cómo se organiza la carga masiva de documentos (y otros datos) y consideraremos en detalle esta pregunta que no es clara para muchos.

En cuanto a los errores de carga, tampoco todo es obvio: hay muchas razones por las cuales los datos no se cargan en el sistema. Los problemas pueden estar del lado de los proveedores de información y del lado de la IP. A continuación analizaremos diferentes situaciones y veremos estadísticas.

Hipermercado chino


Por ejemplo, en una lejana provincia china, donde viven aproximadamente 150 millones de personas, solo hay un gran supermercado abierto las 24 horas donde las personas van a comprar arroz una vez al mes. Los residentes pueden venir por el arroz cualquier día del mes. Hay mucho arroz, hay mucho lugar en el piso comercial. El principal cuello de botella es el pago de las compras en la caja, ya que esta operación es obligatoria (no se puede omitir a los compradores sin pago), lleva tiempo y el uso de equipos especiales: cajas registradoras. Sería mejor para el hipermercado que las personas de alguna manera se pongan de acuerdo entre ellas y vengan a comprar de manera uniforme (día y noche), en cuyo caso el uso de cajas sería lo más eficiente posible.

Sin embargo, por suerte, los compradores no van al hipermercado. En primer lugar, de alguna manera no quieren ir de compras por la noche. En segundo lugar, a veces son ilimitados: o no hay nadie, luego vienen varios millones de personas al mismo tiempo.

Fuente El centro comercial más grande del mundo, New Century Global Center en Chengdu en China. Tiene 18 pisos y un área de 1,700,000 m2.

¿Qué hacer en un supermercado? El Partido Comunista Chino ha establecido la tarea de servir a todos los chinos, y eso es todo. Cada chino sin servicio es un inconveniente para el karma del gerente del supermercado. Si hay demasiados chinos insatisfechos, ¡no derribes su cabeza por él! Al mismo tiempo, por supuesto, el gerente no puede entregar 150 millones de cajas. Si de repente en un año el astuto controlador traerá un informe de que la taquilla se usa al 1%, entonces el desafortunado director enfrentará un destino poco envidiable. Si un comprador ordinario espera demasiado (más de un minuto), se quedará sin el hipermercado y escribirá una declaración para el camarada Mao mismo, gritando "quinientos cuatro tramposo Gatevanau tameaut Khan a todos ustedes".

Después de observar cómo funciona el océano, nuestro amigo introdujo un sistema avanzado de gestión de colas. Ahora todo funciona así. Después de tomar un paquete de arroz, el comprador va a la terminal para recibir un número en la cola. El tiempo de espera en línea depende de la cantidad de cajas registradoras. Experimentalmente, el director adjunto descubrió cuántos cajeros automáticos deberían ser para que los compradores, por un lado, no hagan cola durante demasiado tiempo y, por otro lado, el coeficiente de uso de los cajeros automáticos no sea demasiado bajo.

Fuente

Todos son felices El sistema de venta de entradas es muy simple y siempre rápido. El número de cajas registradoras se selecciona de modo que:

  • La tasa de utilización de las cajas registradoras permitió al compañero director vivir feliz para siempre;
  • la longitud de la cola era pequeña y los chinos pasaban poco tiempo en ella ( percentil 95 del tiempo de espera <un valor razonable, por ejemplo, 5 minutos);
  • incluso si, como resultado de las circunstancias, muchos compradores acudieran a la tienda al mismo tiempo, el tiempo de espera se extenderá, pero se atenderán hasta las 23:00 de la noche para que puedan regresar a casa y ver el comunicado de prensa antes de acostarse.

Aproximadamente lo mismo debe organizarse IP en términos de recepción masiva de documentos. Por ejemplo, cada mes debemos asegurar la carga de un total de al menos 150 millones de documentos de 100 mil proveedores. Para que la calidad de los datos descargados sea alta, es necesario verificar todos los datos antes de descargarlos. Los datos incorrectos se descartan. Y los correctos deben presentarse de forma estructurada en el almacenamiento del sistema para que puedan ser analizados y utilizados en el futuro.

La necesidad de verificar los datos antes de la descarga conduce al hecho de que necesita realizar una serie de "controles", que van desde formateados y que terminan en complejos (por ejemplo, a veces se necesita un control comercial que demuestre que la organización tiene una base para descargar los objetos transferidos).

Por lo general, no podemos sacrificar la calidad de los cheques. Creemos que los desarrolladores ya han optimizado todos los algoritmos y una mayor optimización lleva demasiado tiempo o complica el mantenimiento y el desarrollo del sistema. En nuestros proyectos, el tiempo de procesamiento de una solicitud que contiene de uno a quinientos documentos (pago, factura, contrato, proyecto de adquisición, etc.), en promedio, es de varios segundos en el backend (consulte el ejemplo en la Figura 1). Este tiempo no es constante, sino que varía dentro de ciertos límites, ya que en un sistema complejo siempre hay muchos factores diferentes que pueden afectar el procesamiento de un paquete.

Figura 1. Una línea de tiempo típica para procesar paquetes de documentos. El tiempo promedio en la región de tres segundos.

Incluso si para su IS las fechas de descarga están reguladas por ley, entonces, para los proveedores de documentos, por regla general, no existe un calendario claro de descargas. Existen ciertas plantillas para diferentes tipos de documentos, por ejemplo, las facturas se pueden emitir a principios de mes, los picos en la carga de otros datos se pueden determinar según los términos de los documentos normativos o se pueden asociar con el final del año, etc.

Por lo tanto, en la práctica, en cualquier momento dado, la intensidad de la carga de documentos puede ser muy diferente: es casi imposible preverlo con precisión. Puede suceder que todos los 150 millones de documentos de buenos proveedores decidan cargar al sistema al mismo tiempo. Y esto no es lo mismo en absoluto, como si los descargaran estrictamente de acuerdo con un cronograma de 5 millones por día.

Figura 2. Un ejemplo de la distribución del número de documentos descargados por día durante los últimos seis meses.

La Figura 2 muestra que la cantidad de documentos cargados por día varía ampliamente. Está claro que, en promedio, se descargan entre 4 y 5 millones de documentos por día. Al mismo tiempo, algunos días se enviaron más de 10 millones de documentos al sistema. La cantidad máxima de documentos cargados por día es más de 17 millones.

Si observamos la dinámica horaria de la carga de documentos, veremos fluctuaciones aún mayores en el tráfico. En algunas horas, se cargan 50 mil documentos en el IS, y en algunas horas el número de documentos cargados excede de 1 millón. Cuanto más corto sea el intervalo, mayor será la variación en la carga que vemos.

Obviamente, dos, tres y diez millones de documentos pueden ingresar simultáneamente al sistema. Por lo tanto, al diseñar mecanismos de carga masiva, utilizamos el almacenamiento en búfer de consultas mediante colas. Cualquier solicitud del usuario se almacena primero en la cola. Por lo tanto, podemos recibir solicitudes para recibir documentos con una intensidad muy alta en el sistema, porque la operación de recibir una solicitud es muy simple. Pero la validación y carga del documento ya se realiza mediante "procesadores" especiales, cuya cantidad se ajusta en función de las capacidades disponibles. Cuanto más hierro, más "procesadores", más solicitudes puede procesar el sistema al mismo tiempo.

El poder del complejo de hardware y software IP está determinado por el ancho de banda requerido y los costos de hardware. Necesitamos encontrar un equilibrio para que nosotros (el cliente) estemos satisfechos con la utilización de hierro durante los períodos de baja carga y, al mismo tiempo, durante los períodos pico, la cola de datos para la carga no crece demasiado. Teniendo en cuenta que, por la noche, con mayor frecuencia tenemos una disminución natural de la carga, podemos usar una guía: todos los datos deben descargarse el mismo día o durante la noche. Si cada vez más a menudo sucede que los datos no tienen tiempo para cargarse durante la noche, entonces esta es una señal para aumentar el rendimiento al agregar hierro.

Figura 3. Un ejemplo de una programación para cambiar la longitud de una cola para cargar paquetes de datos.

La Figura 3 muestra estadísticas sobre la longitud de la cola para descargar paquetes de datos. Es necesario tener en cuenta que durante el día tenemos una joroba característica, y por la noche se restablece la cola.

Dado que el tiempo de carga del paquete de datos es la suma del tiempo de espera en la cola y el tiempo de procesamiento del paquete de datos en el back-end, el tiempo de carga en la noche es mucho menor que durante el día (ver Figura 4).

Figura 4. Tiempo de descarga para paquetes de datos. El promedio para el período fue de 11.92 minutos. El tiempo de arranque incluye el tiempo de cola y el tiempo de procesamiento del backend.

Podemos concluir: si el proveedor envía un paquete de datos por la noche, el tiempo de descarga será mínimo. Por otro lado, si las capacidades del IC se seleccionan de tal manera que se procese la cantidad de datos esperada en el mismo día o máximo por noche, entonces el proveedor no tiene sentido mantener la carga de datos; solo necesita enviar la cantidad completa de documentos, y se procesará lo más rápido posible.

Cómo alimentar a un pueblo entero


Volvamos a nuestras afirmaciones. “Enviamos un documento para descargar, y tardó hasta 10 segundos. Por lo tanto, si nuestra organización necesita cargar 100 mil documentos, ¡nos tomará 100,000 * 10/3600 = 277 horas! ”

Cada cliente que llega a un hipermercado en diferentes momentos puede ser atendido en diferentes momentos. Dependerá de cuántos clientes vinieron a la tienda. Por la noche, es probable que las cajas de efectivo estén vacías y el comprador será atendido de inmediato. Y en la hora pico, puede esperar en la fila durante varias horas.

Fuente

¿Qué hacer si necesita comprar arroz en un pueblo de 100 mil habitantes? No tiene sentido enviar a cada aldeano al hipermercado uno tras otro (el siguiente sale solo después de que regresa el anterior). Obviamente, en este caso, la compra de arroz para todo el pueblo se extenderá por muchas horas o un día, ya que tienes que hacer cola 100 mil veces seguidas. Por otro lado, si todos los aldeanos llegan al hipermercado a la vez, hacen cola todos juntos, entonces se pondrán en fila al mismo tiempo. De hecho, hacen cola solo una vez. Su tiempo de espera en línea también dependerá significativamente de la cantidad de cajas.

En otras palabras, el tiempo de carga de una gran cantidad de datos se ve afectado por la carga actual en el sistema (el número de paquetes en la cola) y el rendimiento del sistema (la intensidad con la que se procesan estos paquetes). Un indicador como el tiempo de carga de un paquete individual es en sí mismo insuficiente y lleva a conclusiones erróneas.

Para cargar una gran cantidad de datos en el IS, no necesita enviar solicitudes secuencialmente, esperando que se procese la anterior. Es necesario enviar todas las solicitudes al IS a la vez, serán procesadas y procesadas por "procesadores" especiales con una intensidad que depende de las capacidades y capacidades disponibles. Obviamente, generalmente el ancho de banda de la IP excede significativamente las necesidades de cada proveedor de datos en particular.

Como resultado, los métodos síncronos no son adecuados para la carga masiva; esto es un antipatrón.

¿Por qué puedes castigar a un compañero director?


¿Qué es lo que más le preocupa de un compañero director en esta historia? ¿Por qué pueden castigarlo?

Se le puede negar el servicio al cliente; esto siempre es desagradable. Pero hay muchas razones por las que esto puede suceder, y tienen una naturaleza diferente. Hagamos una lista.

1. Si el sistema de emisión de colas no funciona, esto es muy malo. Es tan malo que al día siguiente tales situaciones se solucionen en la oficina del camarada Mao.

2. Si la línea en el hipermercado aumenta y los clientes comienzan a quedarse allí por mucho tiempo, entonces esto es sospechoso, pero no necesariamente malo de inmediato. Esto debe ser monitoreado, pero hay dos situaciones:

  • la cola está creciendo debido al hecho de que han venido demasiados chinos al mismo tiempo, por ejemplo, debido al rumor sobre los aumentos de precios;
  • la cola está creciendo debido al hecho de que, por alguna razón, muchas taquillas se han roto. Esta situación ya es mala, se entenderá en una reunión de planificación y puede dar lugar a reprimendas.

3. Si un chino en particular no puede comprar arroz, entonces esto también puede ser por varias razones:

  • si los chinos olvidaron tomar el dinero, entonces esto no es culpa del compañero director;
  • si en la caja algo se rompió o el cajero regañó a los chinos, entonces esto ya es un problema de hipermercado. Si la proporción de tales incidentes aumenta a cierto nivel, esto se convertirá en un gran problema.

Está claro que para cualquier IP una característica importante de los mecanismos de carga masiva es el porcentaje de denegación de servicio. Es necesario distinguir entre la denegación de servicio por razones técnicas relacionadas con el funcionamiento del IS (falla del equipo, error del sistema, etc.) y fallas por razones relacionadas con problemas del lado del proveedor (formato de paquete de datos incorrecto, datos incorrectos desde el punto de vista comercial) controles, etc.).

Las situaciones pueden ser diferentes. Pero si la IP se desarrolló teniendo en cuenta los principios anteriores y hay un proceso de monitoreo continuo y eliminación de errores técnicos, tarde o temprano la situación se estabilizará. En un sistema que funciona bien, las estadísticas sobre descargas de paquetes se parecen a la tabla 1.
Número de solicitudes de descarga, piezasCompartir%
Paquetes cargados con éxito
125 977 459
79,94%
Paquetes que no se cargaron total o parcialmente debido a problemas del lado del proveedor (FLC, control comercial)
29 936 543
19%
Paquetes que no se descargaron debido a un problema en el lado de IP
38 805
0.02%
Paquetes duplicados
1,638,886
1,04%
Total
156 812 782
100%
Tabla 1. Descargar estadísticas para julio de 2018

La tabla muestra que la mayoría de los paquetes se cargan correctamente. Además, una alta proporción de errores del lado del proveedor de información. Esto puede deberse a la gran cantidad de proveedores y sus diversos grados de preparación para el intercambio de información. Los proveedores pueden tener datos de baja calidad, pueden tener problemas con los sistemas de información. Es posible que algunos datos no estén disponibles en forma electrónica estructurada, y lleva tiempo recibirlos.

Desafortunadamente, pueden ocurrir errores de IP, especialmente si su rápido desarrollo está en marcha. Es importante que se inicie el proceso de monitoreo de errores en el entorno industrial y un análisis de las causas de su ocurrencia. Utilizamos un sistema de monitoreo desarrollado para los mecanismos de integración en nuestros proyectos LANIT, y si vemos que el número de errores comienza a crecer, determinamos su origen y tratamos de tomar medidas correctivas rápidamente.

Conclusión


En conclusión, me gustaría repetir los puntos principales nuevamente.

  1. En el desarrollo y desarrollo de IP estatales o corporativas, surgen tareas de carga masiva de datos. El flujo de solicitudes de descarga al IS, como regla, es aleatorio. Esto significa que conocemos aproximadamente la distribución, pero en un momento dado pueden llegar muy pocas y muchas solicitudes.
  2. Los mecanismos para recibir datos para la carga masiva deben construirse utilizando colas. El punto es imposible de otra manera. De lo contrario, debemos permitir la pérdida de datos si se descarga una gran cantidad de datos, o si necesitamos usar mucho, mucho hierro, que permanecería inactivo el 99% del tiempo.
  3. El tiempo de carga de datos consiste en el tiempo de espera en la cola y el tiempo de procesamiento de datos. El tiempo de procesamiento de los paquetes de datos en el backend con procesos de diseño y desarrollo adecuados es de segundos o milisegundos. El tiempo de espera de la cola (minutos) depende de la cantidad de controladores utilizados por el sistema. El número de procesadores está determinado por la potencia del complejo hardware-software. Más hierro: más manipuladores, más rápido la cola. Y viceversa.
  4. Los servicios síncronos no son aplicables para descargas masivas, por lo que no se recomiendan.
  5. Si es un proveedor y necesita cargar muchos datos, envíelos a la IP de inmediato. En ningún caso debe enviar datos secuencialmente uno tras otro (el siguiente paquete no se envía hasta que se descargue el anterior).

Source: https://habr.com/ru/post/441284/


All Articles