Je fais maintenant une petite recherche pour trouver un moyen de stocker un énorme volume de données (temporairement, jusqu'à ce que certains consommateurs consomment ces messages) de divers «producteurs de messages» (source). Les données proviennent de différentes sources, par exemple HTTP, FTP, SMPP ou de téléchargement de fichiers, chaque type peut avoir des dizaines ou des centaines d'instances créant des messages. Les messages produits par eux peuvent devenir si importants que les consommateurs peuvent être à la traîne en consommant les messages, car les processus peuvent prendre beaucoup de temps ou non. Maintenant, le système utilise RabbitMQ dans certaines parties, mais ses performances diminuent quand un énorme volume de message non consommé augmente (je cherche également à améliorer ses performances, mais c'est différent). Comme alternative, je regarde Apache Kafka qui utilise le disque pour les messages persistants. En lisant de nombreux articles sur Internet, j'ai lu des articles qui parlent de l'Apache Cassandra avec une écriture très rapide, traitant un million d'insertions par seconde et des lectures de volumes similaires. J'ai été étonné, et j'ai essayé de trouver des pistes en utilisant Cassandra pour mon cas, mais sans résultats clairs.Cassandra pour la messagerie
En supposant que j'ai un grand nombre de producteurs de messages, Cassandra (cluster) peut-il gérer les insertions (par lots) de manière plus rapide (débit global élevé) que les producteurs n'accélèrent pas? Je suis sûr que certains d'entre vous auraient pu utiliser Cassandra pour ce genre de cas d'utilisation ou similaire, partager leurs expériences. (Je suis prêt à vous fournir plus d'informations si cela ne suffit pas)
Bonne réponse. Je pense que définir la valeur gc_grace_seconds à une valeur assez appropriée (maintien des performances et des surcharges gc et stockage supplémentaire causé par les pierres tombales) peut vous aider car Cassandra est conçu pour les insertions lourdes/rapides avec moins de lectures et de suppressions. . Kafka est celui conçu pour de tels cas d'utilisation. –