I have an application that takes rules via the REST API and updates the working memory. Using this approach, I can add new rules, update existing rules, and delete rules on the fly programmatically. I want to run the application on multiple nodes, but if a request hits a single node, the working memory on all other nodes will not be updated.
I considered using the following approaches, but they each have their own set of problems:
Broadcasting the request to all the nodes: The problem with this approach is that if all the nodes are updating at the same time, I will face downtime. Additionally, if one node fails due to the request, there is a chance that the others might fail as well.
Using RabbitMQ: If one node successfully updates the working memory, that node can broadcast the request to all the other nodes. However, in the end, all the nodes need to process the request again in order to update their working memory. I want to avoid using an event-based approach, as if a node doesn't receive the event, it will not update its working memory.
I have reviewed the approaches mentioned in this conversation, such as SpringBoot + Drools in AKS
I'm looking for a solution where, if a node successfully processes the request and updates its working memory, that working memory is somehow shared across all the other nodes.