Hi Jorge, I understand the problem you are trying to solve, but this is not quite how Sequoia works.
Sequoia uses a technique that is sometimes calls state-machine replication. It accepts SQL requests arriving from multiple concurrent clients on multiple controllers and applies the requests deterministically to multiple backend databases. This approach depends on all controllers agreeing up front on the arrival order of SQL, which occurs through group communications. The result is multi-master replication. There are two problems with using the state machine approach in WAN environments. 1. Ordering SQL requests becomes exceedingly slow due to network latency. 2. Split-brains (i.e., nodes separated by a network partition) are quite common with WAN environments. In this case you must discard either one side or the other of the split brain and resync. Multiple active nodes on a WAN is in fact a very difficult problem, for which there are limited technical solutions at the present time. The fundamental reason is that if you have disconnected SQL updates going on in two places, there is no general way to merge them in a way that keeps the databases consistent. This means you cannot in general assure the contents will be the same. Here are two design approaches that avoid consistency problems on WANs. There are others but these are most common. 1.) Instead of having 11 peers, have 1 master and 10 slaves. Send updates to the master and read from the slaves. When the master fails, designate another master from one of the slaves. We are working on replication that supports this. (Tungsten Replicator, keep an eye on www.continuent.org.) 2.) Design your application so that updates can occur in any order. This the model used by Lotus Notes and by CouchDB. For SQL databases it generally requires a substantial rewrite, starting with giving up luxuries like auto-increment keys. Please let us know how you do with your distributed application. It's a very interesting problem that many of us have been studying for years. Cheers, Robert On 8/12/08 9:33 AM, "jorge Mtz" <[EMAIL PROTECTED]> wrote: hello. I want to make a cluster (with full replication) with the following infrastructure: -11 machines running windows and 1 running linux. - each machine is in different geographic location, so they are connected in a VPN. -each machine has 1 sequoia controller, 1 backend and 1 client aplication. Everything ok in a ideal network connection but I was expecting an unstable network service. So my needs are the following : 1.- in the each client(with hibernate) i use the URL: jdbc:sequoia://linuxmachine,windowsmachine#/vdatabase?preferredController=ordered where '#' is the number of the windows machine where the client and the controller is located. When I have a network disconnect (like unplugged cable) and the client tried to write data to a controller it hangs up forever, I was expecting a write in the controller in the local machine.(the controller and virtual database config is based on the raidb1-distribution example.) 2.- With that network disconnect (unplugged cable) I was expecting when the machine reconnects to the VPN a automatic merge of the work made in the controller with the others controllers in the group but the machine disconnected never establish communication in the group again i was using the default Jgroup config that comes with sequioia 2.10.10. My needs are solved with any config? Thank you _________________________________________________________________ Nuevo Canal Messenger http://www.vivelive.com/ilovemessenger/ _______________________________________________ Sequoia mailing list [email protected] https://forge.continuent.org/mailman/listinfo/sequoia -- Robert Hodges, CTO, Continuent, Inc. Email: [EMAIL PROTECTED] Mobile: +1-510-501-3728 Skype: hodgesrm
_______________________________________________ Sequoia mailing list [email protected] https://forge.continuent.org/mailman/listinfo/sequoia
