Courtier de file d'attente Capella Queue

Hey!





J'ai souvent vu des en-têtes comme "Apache Kafka vs RabbitMQ vs NATS", mais que se passe-t-il s'il y a quelque chose qui ne convient pas aux solutions toutes faites? Vous pouvez vous adapter ou vous pouvez inventer quelque chose de votre choix. Je suis allé dans la deuxième voie. Dans cet article, je voudrais parler de ma mise en œuvre d'un courtier de messages. Si vous êtes intéressé, bienvenue chez cat.





1.1 Sauvegarde des commandes

Il y a quelque temps, j'ai travaillé dans une très grande boutique en ligne. Il y avait une tâche commune: ne «manquer» aucune commande. Autrement dit, pour faire en sorte qu'il soit possible de sauvegarder la commande à plusieurs endroits, et si au moins l'un d'entre eux est disponible, enregistrez la commande.





1: .





2: , , .





3: ( ).





:( .





, . , .





.





1.2

, " ". , , , , , . , , , .





, .





2.

, , - .





- .





0: - ().





1: (). " " , .





2: , , ().





3: , ().





4: , , ().





*` ` - . , .





.





Kafka - . Kafka - , - .





RabbitMQ - - , . - .





NATS Streaming - . NATS Streaming . NATS Streaming . , PostgreSQL NATS Streaming . , , , . , , NATS Streaming .





.





, .





3. ( )

3.1

Cluster - , .





Queue - . . , . ID .





Handler - . , , , .





ExternalCluster - . . .





3.2

. . . . , .





4 :













  • ,





  • , ,





. , - .





. , .





3.3

. ( ) (s3) ( ).





. . .





: () , .





. :





















" ". " + ID". . , ID . . ( 1000) .





FIFO

. ( , )





3.4

( )

:





  • N Capella Queue









  • , , ,





  • ( )





:





Capella Queue M (M < K)





:





  • + ID.





  • M





  • - , .





, . .





( )

:









  • ,









  • ,





  • ( )





:





Les événements sont stockés dans une file d'attente sur le cluster local. Vous devez définir une source de lien unique au monde + un ID externe pour le message. Grâce aux gestionnaires de copie, les messages seront disponibles à la fois sur l'appareil et dans le DC





4. Plans immédiats

  1. Créez un tutoriel décrivant les principaux cas.





  2. Vissez la sécurité.





  3. Renforcez l'utilisation des certificats SSL par le service.





  4. Ajouter une segmentation - la possibilité de lire et de transférer des données par segment.





  5. Mise à jour des paramètres des files d'attente, des clusters et des gestionnaires.





  6. Fonctionnalité pour contrôler que le message est répliqué sur d'autres clusters.





  7. Métrique.





Le code

Sur github








All Articles