Las ideas se ejecutan las tareas de procesamiento por lotes

fondo

Los requisitos de cumplimiento en la base de datos de la desensibilización información confidencial del usuario, la cuenta de base de datos central y un centro de cuentas tiene expresamente número de teléfono.

soluciones

Ver dos partes, datos incrementales de stock de datos y, en el que el primero de procesamiento de datos incrementales.
datos incremental, el cifrado y el descifrado pueden ser alcanzados por Getter, Setter. Además Dao (Repositorio) puede contener consultas findByPhone, necesidad de ajustarse de acuerdo con el texto cifrado para la primera consulta, si el resultado es vacío, de acuerdo con el texto en claro y luego consulta de nuevo.
los datos de saldos, la base de datos debe ser cifrada en el número de teléfono de texto plano, ya que el cifrado es una operación de la CPU, la base de datos no es adecuado para manejar la física y mental, así que escriba Java tareas regulares para ejecutar lotes.

La primera edición lograr

El tiempo de rosca tarea que el hilo principal, el hilo principal aunque sólo encripta el número de teléfono, un lote de 1.000 PO, cada OP salir de un texto plano, y luego de vuelta conjunto, organismo responsable de cifrado, la última parada.
Tal PO lote 1000, encontrado consumir 5s. Probé un PO lote 10000, los años 50 que consumen mucho tiempo medidos, visible rápido de un roscado de procesamiento es constante.
Sé aritmética simple, tener en cuenta el desarrollo de centros ambiente tiene diez millones de datos, toda necesidad de correr por los 10000s, lo que equivale a 2,78 horas. Los datos de producción es el entorno de desarrollo en varias ocasiones, como la eficiencia ciertamente no.

La segunda edición de realización

La segunda edición hizo dos mejoras:

  1. Multihilo. cifrado el número de teléfono es operaciones intensivas de la CPU, nuestras máquinas tienen un gran excedente de recursos de la CPU, por lo que los ejecutores utilizar para crear un grupo de subprocesos de tamaño fijo, sólo es responsable de cifrado, no es responsable de la IO otras operaciones de inserción y.
  2. inserción masiva. Abrir la transacción, la transacción debe ser presentada para interactuar con la base de datos, y ocupará una cierta cantidad de recursos de base de datos. Esta escena poco tiempo un gran número de operaciones de escritura, se puede colocar en la misma transacción, reducir los gastos presentados transacción abierta. Esto se logra mediante Future.isDone () se determina después de la finalización de la desensibilización lote actual, un mantenimiento de registros de lotes de una sola vez.

La aplicación, con el fin de reducir la inserción masiva comenzó un fracaso para revertir la pérdida, también hizo una rebanada, es grabar un lote de la manera más justa asignado a cada hilo, participantes pieza va a pensar en el trabajo a robar (Java implementación es ForkJoinPool), la cabeza llena de operación Sao, no es tan bueno como la última sencilla FixedThreadPool y eficiente.

el tamaño del grupo de subprocesos

Creado a partir de los ejecutores FixedThreadPool, coreSize y maxSize es el mismo. 4 sola línea base de la máquina de la CPU, ya que la UAT es un despliegue de servicios múltiples, hay ocho CPU de un solo núcleo, cada entorno es diferente, es necesario establecer dinámicamente maxSize, donde maxSize establece Runtime.getRuntime (). AvailableProcessors () * 3 .

La cantidad de datos de un procesamiento por lotes

FixedThreadPool con LinkedBlockingQueue una cola sin límites, tenemos que evaluar cuidadosamente la huella de la memoria. Innodb un 222b de ocupación récord, llegó a la JVM será aún mayor, suponiendo 250b por mesa desc encontró.
Runtime.getRuntime.freeMemory ejecución en la máquina de desarrollo local (), // TODO. la memoria visible es suficiente, mucho puede manejar una gran cantidad de datos, pero la consulta ** piezas de datos, escritos a la base de datos no traerán la presión, la duda, la elección final de una carrera de lote 30000 de datos.

Supongo que te gusta

Origin www.cnblogs.com/mougg/p/12572756.html
Recomendado
Clasificación