[rules-users] High availability with a drools cluster

Mark Proctor mproctor at codehaus.org
Mon Mar 3 18:22:18 EST 2014


Edson will be working on building a clustered HA execution server during the spring and summer period. No details yet, he’s just starting this now.

We’ll be taking a slightly different approach. Master will run and produce a incremental journal of non-reproducable state changes; such as the state of the agenda. We’ll replicate that journal log, along with user entity state changes to the slaves for replay.

> I’m certain that other nodes can be notified, if one of the nodes go down. So the question is, about the possibility to write/read the session to/from a cache, pick up with session and seamlessly resume the execution. Are there any practical approaches to store the working memory in a cache instead of just the VM memory?
> 

You can marshal a session to a byte[] and persist that, the down side is serialises the entire session every time. So it can be quite heavy, which is why are trying to work on a incremental journal approach instead.


Mark
On 3 Mar 2014, at 07:46, Chakravarthi Muppalla <chakri143 at gmail.com> wrote:

> Hello All,
> 
>  
> We are planning to user drools for our event driven business rules execution. I’m designing this around the features available in Expert engine, Fusion, Guvnor.
> 
>  
> An overview of the system will look like this.
> 
>  
> 1.)    1.) We will have N application nodes with an embedded drools engine. These nodes will be subscribed to the JMS(mostly ActiveMQ) and a clustered cache.
> 
> 2.)    2.) All the customer activities will be pushed onto the JMS. One of these N nodes will get the customer activity event. This node will update the cache (customer related data cache) with this activity.
> 
> 3.)   3.)  As all the nodes are connected to the cache, each one of them will get a call back about the cache entry.
> 
> 4.)    4.) If this is the first activity of the customer, One of the nodes will act as a master to pick up this and insert this into the stateful session’s working memory.
> 
> 5.)    5.) Any further cache call backs related to this user will be sent to this node.
> 
>  
> In case one of the nodes go down, I want one of the other nodes to resume the execution of the affected customers.
> 
> To translate this into drools, I want one of the nodes to pick up the session of the failed node.  As this is not available out of the box, I’m looking for possible approaches.
> 
>  
> I’m thinking of writing the working memory contents to a middle tier cache(possibly radis) backed by persistence(mysql). This cache will write the data to the persistence either at certain intervals or on certain events.
> 
>  
> I’m certain that other nodes can be notified, if one of the nodes go down. So the question is, about the possibility to write/read the session to/from a cache, pick up with session and seamlessly resume the execution. Are there any practical approaches to store the working memory in a cache instead of just the VM memory?
> 
> 
> -- 
> Cheers!
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20140303/b7392519/attachment.html 


More information about the rules-users mailing list