bonjour,
J'ai un grand dilem sur un choix de méthode:
je reçoit via un socket des informations (des lignes de texte) que je doit traiter. Je dois dans un premier temps les découper, puis les insérer dans une base de donnée et enfin calculer des statistiques dessus. le problème est la volumétrie qui peut être de l'ordre 1.000.000 de ligne par 24h (soit environ 700 lignes secondes). le soucis c'est que si les traitements deviennent trop long par moment (200-300ms par exemple), il ne faut pas que le system lache (crash, perte de ligne....).
La question que je me pose est de savoir si il faut mieux créer un thread par ligne entrante (l'étapte la plus urgente est l'insertion de la ligne découpée dans la base de données, les stats peuvent attendre 2 ou 3 minutes), ou bien mettre un seul thread qui bosse dès qu'une file d'attente de ligne n'est pas vide (et donc stocker les lignes en FIFO dans leur ordre d'arrivée).
Dans un cas, je risque de me retrouver avec un paquet de thread qui tournent en même temps, dans l'autre, une file d'attente qui risque de devenir bien importante et donc des traitements retardés... sachant qu'il ne faut pas, dans la mesure du possible, mettre 3 jours à inserer la ligne.
A voter avis, que dois-je choisir...
Merci
Partager