Je travaille avec Storm et c'est très bien pour beaucoup de cas d'utilisation. Récemment, j'ai regardé Trident , qui est une abstraction de haut niveau de Storm. Il prend en charge le traitement exactement une fois et facilite le traitement avec état.
Mais maintenant je me demande .. Pourquoi ne puis-je pas toujours utiliser Trident au lieu de Storm?
Ce que j'ai lu jusqu'à présent:
Y a-t-il d'autres inconvénients lors de l'utilisation de Trident au lieu de Storm? Parce qu'en ce moment, je pense que les inconvénients que j'ai énumérés ci-dessus sont marginaux.
Quels cas d'utilisation ne peuvent pas être implémentés avec Trident?
Conséquences:
Depuis que j'ai posé la question, mon entreprise a décidé d'aller d'abord chez Trident. Nous n'utiliserons Pure Storm qu'en cas de problèmes de performances. Malheureusement, ce n'était pas une décision active, c'est juste devenu le comportement par défaut (je n'étais pas là à l'époque).
Leur hypothèse était que dans la plupart des cas d'utilisation, nous avons besoin d'un traitement d'état ou unique, ou nous en aurons besoin dans un avenir proche. Je comprends leur raisonnement parce que passer de Storm à Trident ou inversement n'est pas une transformation facile, mais à mon avis, le concept de traitement de flux sans état n'était pas compris par tous et c'était la principale raison d'utiliser Trident.
Pour répondre à votre question: quand ne devriez-vous pas utiliser Trident? Chaque fois que vous pouvez vous le permettre.
Trident ajoute de la complexité à une topologie Storm, diminue les performances et génère un état. Posez-vous la question: avez-vous besoin de la sémantique de traitement "une seule fois" de Trident ou pouvez-vous vivre avec la sémantique de traitement "au moins une fois" de Storm. Pour exactement une fois, utilisez Trident, sinon ne le faites pas.
Je voudrais également souligner le fait que Storm garantit que tous les messages seront traités. Certains messages peuvent simplement être traités plusieurs fois.
Si la latence la plus faible possible est votre objectif et que vous n'avez pas besoin d'un traitement en une seule fois, il est préférable d'utiliser Storm que Trident.
Trident est une abstraction de haut niveau pour faire de l'informatique en temps réel sur Twitter Storm, disponible dans Storm 0.8.x. Storm est un framework de traitement de flux sans état et Trident fournit un traitement de flux avec état.
Chris, puisque ces deux sont des technologies open source, trident ne sert que d'implémentation d'un scénario au sommet de la tempête, bien sûr, cela a entraîné une surcharge de performances. Si le trident ne pouvait pas répondre à vos besoins, vous créez votre propre implémentation d'état au sommet de la tempête. Trident a produit des projets de niveau supérieur tels que Trident-ML dans le temps.
supposons que nous voulons faire un filtrage + ajout d'un champ à un tuple. si nous utilisons tempête, nous utilisons généralement 2 bots pour le filtrage, ajout de champ. encore une fois, nous devons envoyer le tuple à un nouveau boulon en utilisant peut-être un regroupement global. ici, la bande passante nw peut devenir un goulot d'étranglement.
en utilisant trident, nous pouvons utiliser do ci-dessus sur une seule machine. donc aucun regroupement n'est nécessaire dans ce cas. un tel cas d'utilisation en plus de "exactement une fois"/"à l'est une fois" peut différencier quoi utiliser, etc.
Trident est une sorte de regroupement de regroupement logique