Ainsi, Apache Storm + Trident fournit la sémantique exacte. Imaginez que j'ai la topologie suivante:Garantie unique dans Storm Trident dans les scénarios de partitionnement et/ou de panne réseau
TridentSpout -> SumMoneyBolt -> SaveMoneyBolt -> Persistent Storage.
CalculateMoneyBolt
valeurs monétaires dans leur montant mémoire, puis transmet le résultat à SaveMoneyBolt
qui devrait enregistrer la valeur finale à un stockage distant/base de données.
Maintenant, il est très important de calculer ces valeurs et de ne les stocker qu'une seule fois dans la base de données. Nous ne voulons pas accidentellement compter deux fois l'argent. Comment Storm with Trident gère-t-il les scénarios de partitionnement et/ou de défaillance réseau lorsque la demande d'écriture dans la base de données a été envoyée, la base de données a correctement reçu la requête, enregistré la transaction et, tout en répondant au client, SaveMoneyBolt
est mort ou partitionné du réseau avant d'avoir reçu la réponse de la base de données?
Je suppose que si SaveMoneyBolt
était mort, Trident réessayerait le lot, mais nous ne pouvons pas nous permettre un double comptage.
Comment ces scénarios sont-ils gérés?
Merci.