Scenario:
We have several nodes distributed geographically on which we want queues to collect messages for this location. And then we want to send the collected data from each queue in each node to the corresponding queues in a central location. In the central node, we pull out the data collected in the queues (from other nodes), process them and save them persistently.
Limitations:
- Data is very important to us. Therefore, we must make sure that we do not lose data in any way.
- Therefore, we need constant queues on each node, so even if the node drops for some random reason, when we raise it, we have the collected data safe with us, and we can send it to the central node, where it can be processed.
- Similarly, if the central node does not work, the data should remain on all other nodes, so when the central node appears, we can send all the data to the central node for processing.
- In addition, data about the central node should not be duplicated or stored again. That is, data collected on one of the nodes should be stored only on the central nodes.
- The data we collect is very important to us, and the order of data delivery to the central node is not a problem.
, , . ( ) Redis , Redis . , , , node. node ACK node, ( ), ACK node . , , ACK.
( ) , , , . Redis. , AMQP, RabbitMQ, ZeroMQ .. , .
- , ? , ?
- , , ?
- - ?
- ?
- ?
- , , , node .