Queue Broker Capella Queue

¡Oye!





A menudo he visto encabezados como "Apache Kafka vs RabbitMQ vs NATS", pero ¿qué pasa si hay algo que no se adapta a las soluciones listas para usar? Puede adaptarse o puede inventar algo propio. Fui por el segundo camino. En este artículo, me gustaría hablar sobre mi implementación de un corredor de mensajes. Si está interesado, bienvenido a cat.





1.1 Guardar órdenes

Hace un tiempo trabajé en una tienda online muy grande. Había una tarea común: no "perder" ningún pedido. Es decir, hacer que sea posible guardar el pedido en varios lugares, y si al menos uno de ellos está disponible, guardar el pedido.





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





  • - , .





, . .





( )

:









  • ,









  • ,





  • ( )





:





Los eventos se almacenan en una cola en el clúster local. Debe definir una fuente de enlace globalmente única + ID externa para el mensaje. Gracias a los controladores de copia, los mensajes estarán disponibles tanto en el dispositivo como en el DC





4. Planes inmediatos

  1. Cree un tutorial que describa los casos principales.





  2. Atornille la seguridad.





  3. Reforzar el uso de certificados SSL por parte del servicio.





  4. Agregue segmentación: la capacidad de leer y transferir datos por segmento.





  5. Actualización de parámetros para colas, clústeres y manejadores.





  6. Funcionalidad para controlar que el mensaje se replique en otros clústeres.





  7. Métrica.





El código

En github








All Articles