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(a)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(a)lists.jboss.org
>
https://lists.jboss.org/mailman/listinfo/rules-users