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

Reply via email to