Análisis de código fuente dinámica-fuente de datos-estrategia de equilibrio de carga del componente spring-boot-starter
El sondeo es el algoritmo predeterminado.
Ambas clases de algoritmo implementan la interfaz DynamicDataSourceStrategy:
Entonces, si necesita personalizar el algoritmo de equilibrio de carga, puede implementar la interfaz DynamicDataSourceStrategy. La interfaz solo define un método determineDataSource, que se utiliza para determinar la estrategia de selección de múltiples fuentes de datos:
(1) Algoritmo de sondeo
Aquí, el número entero con seguridad de subprocesos de 2 es usado La clase AtomicInteger se crea como un contador con un valor predeterminado de 0.
Luego, en el método de implementación de determineDataSource, use AtomicInteger#getAndAdd() para acumular la calculadora y luego divida el valor del resultado por el número total de fuentes de datos para encontrar el resto.
Math.abs() aquí parece innecesario porque el dividendo y el divisor deben ser mayores que 0.
Se puede modificar de la siguiente manera:
(2) Algoritmo aleatorio
ThreadLocalRandom se utiliza para generar números aleatorios seguros para subprocesos 3 y el método current() es su fábrica estática.