Hi,

Having in mind all the issues behind the idea of sharing backends among controllers, I guess the solution that best fits our needs is something like the “Flood Alert System” one. One difference, however, is that, in our system, there will be many more clients than controllers/backends; in such scenario, each client would choose a particular controller according to some load balance technique and would stick to it till the end of its work.

In this case, we can see that the current Sequoia load balance system is completely misused, whereas there would be the need for a similar system at the driver’s level. If we go further, we realize that the whole controller is debased as it doesn’t perform anymore most of its useful functionality (like managing different replication models). Another caveat of this arrangement is that each controller/backend would have its own recovery log, which sounds a bit excessive to me.

Well… We are seriously considering the possibility of implementing what I would call a LPAE Sequoia, which main feature is to work with only two tiers instead of three. The main consequences that arise from this architecture are:

a) a great deal of code would have to be migrated from the controller level to the driver level,

b) there might be necessary to implement a two-phase-commit protocol to maintain the multiple controllers synchronized with a single shared recovery log.

Do you see any obvious flaws into these ideas ?

Actually the Sequoia driver probably implements already all the features you need. If you look at the load balancing capabilities of the driver described at http://sequoia.continuent.org/doc/infocenter/topic/org.continuent.sequoia.doc/html/Balancing_client_connections_to_controllers.html, something like:

|jdbc:sequoia://controller1,controller2,controller3/myDB?preferredController=controller1,controller2|

will allow clients to first load balance on controller1 and controller2 (let's suppose they are local) and only switch to a remote controller3 if and only if controller1 and controller2 are down. Sequoia drivers are also capable of transparent failover and can seamlessly reconnect and pursue any in-flight transaction in case of a controller failure. This way the application never see any failure unless the entire system is unavailable. Note that each controller maintains its own local copy of the recovery log which allows to resynchronize with remote controllers.

Hope this clarifies things,
Emmanuel

--
Emmanuel Cecchet
Chief Scientific Officer, Continuent

Blog: http://emanux.blogspot.com/
Open source: http://www.continuent.org
Corporate: http://www.continuent.com
Skype: emmanuel_cecchet
Cell: +33 687 342 685


_______________________________________________
Sequoia mailing list
[EMAIL PROTECTED]
https://forge.continuent.org/mailman/listinfo/sequoia

Reply via email to