[Date Prev][Date Next]
RE: Multimaster Algorithm (was: Documentation volunteer (which was: Cluster replication: multiple masters))
Howard Chu wrote:
>> 1. The LDAP master that is being written to should only "broadcast"
>> an update to its slaves (which are also all masters) if the
>> update the entry data being updated is _different than_ the data that
>> was already in the database.
> I found the above sentence to be unparsable. I think I understand what
> you mean though.
I don't think that will work. We have to propagate timestamps in all
cases, and in some special ones, also the whole set of data. 'Cause we
don't know whether we have to replicate just timestamps or all data, we
have to replicate all data all the time.
Otherwise we'll get problems if the internal network is down, and one
node gets an update without changes (or at least looks like) and a
prior update to _another_ node (with changes) gets delayed propagated
to all nodes which, except one node, not knowing of the later one, will
apply wrong Information.
Possible solutions would be
1.) to delay updates, if one of the other nodes is not responsible. But
that has lot of Murphy in it, I'd say. (Network up, who propagates
first? That would provoke massive parallel updates, not good.) A second
problem here is the missing failsave. (If one node dies, whole cluster
stops updating datasets, that's _really_ not good.)
or 2.) Keep information about updates in slapd, or redesign slurpd. If
there's a current update that is older than the dataset in the backend,
_and_ all updates that were made to the backend chronologically after
the current one haven't been propagated, _and_ the current update
differs from the backend data, we have to propagate the data from the
_backend_ to all other nodes. Duh.
The big dissadvantage is obviously a lot of overhead. E.g. an
updatehistory which has to be written to disk.
I still think, even if you solve all of the theoretical problems, there
is way to much uncertainty in Multi Master Replication. But in some
special cases, e.g. if you _know_, that there _will_ be plenty of time
between updates, it might even work.
just my thoughts,
Mom and dad say I should make my life an example of the principles I
believe in. But every time I do, they tell me to stop it.