Découvrez Spring Batch, sa simplicité, les concepts de bases ainsi que les notions avancées. Tout tout tout, vous saurez tout sur Spring Batch!
Intervenant : Olivier Bazoud @obazoud
7. C’est quoi un batch ?
Exemples:
• Import flat / XML dans une base de données
– Nouveaux clients
– Flux financier…
• Mise à jour de données
– référentiel
• …
12. Spring Batch propose…
•
•
•
•
•
•
Un cadre
Un vocabulaire (domain language)
Traitement par lots
Flow, Reprise sur erreur, …
Spring dans ses batchs
…
Parallélisme
Scaling
Partitionnement
Spring Batch Admin
Monitoring
13. Spring Batch
“Spring Batch is a lightweight,
comprehensive batch framework
designed to enable the development of
robust batch applications vital for the
daily operations of enterprise systems.”
16. Spécifications
3.
Unzip du fichier (départements + villes)
Charger des départements dans la base
Charger des villes dans la base
➢
Lancer la web application
1.
2.
18. Job
●
●
Validation des paramètres du “job”
Composé d’une ou plusieurs étapes
○
●
●
pas forcément linéaire
Liste un ensemble de Listeners
Peut hériter d’un autre job
20. Step
●
●
Etape dans le processus du batch
“Separation of Concerns”
○
●
Distinction entre l’enchainement des étapes
et leur éxécution
Liste un ensemble de Listeners
39. Spring Batch 2.2
Juin 2013
Java Config
Support de Spring Data
Non-identifying Job Parameters
AMQP support
40. Forces et faiblesses
✔ Batchs complexes mieux maintenables
✔ Productivité
✔ Tests
✔ Ticket d'entrée
✔ Ne convient pas à tous les batchs
41. Retour d’expérience
• Avec « Spring Batch »
– Moins de code produit
– Plus de tests unitaires & intégrations
– Spring Batch s'occupe de la montée en charge
• Gain par rapport à un batch « legacy »
– XML 100Mo + SQL; Gain : de 60 mn à 8mn
– 10 fichiers 4Mo + SQL; Gain : de 10mn à 1mn30s
– ~20 fois rapide qu’un batch en … PHP ;)
45. Reprise sur erreur
●
Sauter les erreurs non bloquantes (skip)
○
●
Recommencer un traitement (retry)
○
●
survivre à quelques données invalides
survivre à une indisponibilité temporaire
Redémarrer un batch (restart)
○
on est en mesure de le relancer
51. Restart
• Indique si le job est « restartable » ou pas
• Indique le nombre max de « restart »
• Reader/Writer doivent être « restartable »
52. Reprise sur erreur
• Ecarter des items défectueux (skip)
• Recommencer une step s’il y a une erreur
temporaire (retry)
• Redémarrer un job (restart)
56. Gestion du flow
• Status
– Etat du job/step en cours/après d’exécution
• Créer et utiliser ses propres « status »
• Gérer le flow
– StepExecutionListener
– JobDecider
59. Scaling
– Multi-threaded Step (single process)
• Une Step est multi threaded
– Parallel Steps (single process)
• Les Steps sont exécutées en parallèle
– Remote Chunking of Step (multi process)
• Distribution des chunks par slave
– Partitioning a Step (single or multi process)
• Partage les données à travers les slaves
60. Scaling “Partitioning”
• Répartir les données suivant une clé de
partition ⇒ « Partitionner »
• Traiter les données ⇒ « PartitionHandler »
61. Horizontal Scaling
• RabbitMQ: Message-Oriented Middleware
– Découpler le producteur des consommateurs
• Batch Orienté Tâche ou Worker
64. Monitoring
• Collectd
– http://collectd.org
– démon qui recueille périodiquement des
statistiques de performance du système
• JMXTrans
– https://github.com/jmxtrans/jmxtrans
– Interroge les données JMX de la JVM et les
envoyer dans Graphite
65. Monitoring
• Metrics
– http://metrics.codahale.com/
– Connaitre l’intérieur de votre application
– Gauges, Counters, Meters, Histogram, Timers
• Extension pour Spring Batch
– https://github.com/obazoud/metrics-spring-batch
– Disponible sur Maven Central
69. Spring Batch Admin
• Console Web pour Spring Batch
–
–
–
–
–
« Standalone » ou « Embedded »
API Rest
Uploader une configuration, un fichier à traiter
« Customisable »
Informations sur les jobs, steps, …