Queue Broker Capella Queue

Ei!





Já vi cabeçalhos como "Apache Kafka vs RabbitMQ vs NATS", mas e se houver algo que não corresponda às soluções prontas? Você pode se ajustar ou pode inventar algo por si mesmo. Eu fui pelo segundo caminho. Neste artigo, gostaria de falar sobre minha implementação de um agente de mensagens. Se você estiver interessado, bem-vindo ao gato.





1.1 Salvando pedidos

Há algum tempo, trabalhei em uma grande loja online. Havia uma tarefa comum: não "perder" nenhum pedido. Ou seja, para que seja possível salvar o pedido em vários locais, e se pelo menos um deles estiver disponível, salve o 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





  • - , .





, . .





( )

:









  • ,









  • ,





  • ( )





:





Os eventos são armazenados em uma fila no cluster local. Você precisa definir uma fonte de link globalmente exclusiva + ID externa para a mensagem. Graças aos manipuladores de cópia, as mensagens estarão disponíveis tanto no dispositivo quanto no DC





4. Planos imediatos

  1. Crie um tutorial descrevendo os principais casos.





  2. Dane-se a segurança.





  3. Restrinja o uso de certificados SSL pelo serviço.





  4. Adicionar segmentação - a capacidade de ler e transferir dados por segmento.





  5. Atualizando parâmetros para filas, clusters e manipuladores.





  6. Funcionalidade para controlar que a mensagem seja replicada para outros clusters.





  7. Métricas.





O código

No github








All Articles