pre-release repcached (data replication patch)

Chris Goffinet goffinet at yahoo-inc.com
Fri Nov 2 20:58:53 UTC 2007


What type of overhead are we looking at? Do you have benchmark  
numbers? Wouldn't this cause memcached to lock while its replicating  
an object? Do the nodes communicate to make sure data is in sync?

The approach I took when I wrote memcached proxy was that clients  
could connect to proxy for doing things such as set,delete, etc. The  
idea being you have a proxy on each host running local copy of  
memcached, in parallel the proxy makes 2 async requests to local/ 
remote server, reads client <-> local, disconnects client when done  
while commands are pushed across to remote (combining the multiple  
sets into larger packets for write buffer).


Chris Goffinet
goffinet at yahoo-inc.com



On Nov 1, 2007, at 11:38 PM, HIROSE, Masaaki wrote:

> Hi!
>
> I said "I am also working for memcached replication" before:
>
>  memcached replication
>  http://lists.danga.com/pipermail/memcached/2007-September/005155.html
>
> Finally, We implements all planned features and named this product
> "repcaced".
>
> We release pre patch at following URL and will relase first version  
> if no
> critical bug found.
>
>  repcached-1.0RC4-1.2.2.patch.gz
>  http://sourceforge.net/projects/repcached/
>
> Any comments or advice or bug reports are welcome.
>
> have fun!
>
>
> main purpose:
>  - redundancy memcached system
>  - safe fail over
>
> key features:
>  - asynchronous data repliacation.
>  - single master, single slave.
>  - support all memcached command (set, add, delete, incr/decr,  
> flush_all)
>  - slave become master if master going down.
>  - whole data copy to slave automatically when new slave connect to  
> master.
>
> how to:
>  $ tar zxf tsng/memcached-1.2.2.tar.gz
>  $ cd memcached-1.2.2/
>  $ gzip -cd ../repcached-1.0RC4-1.2.2.patch.gz | patch -p1
>  $ ./configure --enable-replication
>      [notice: cannot set both --enable-replication and --enable-thread
>      [        together.
>  $ make
>  # make install
>
>  two machines "foo" and "bar".
>
>  foo$ ./memcached          (start as master)
>  bar$ ./memcached -x foo   (start as slave and connect to master(foo))
>
>  client set key/val to master(foo). we can get same value from  
> slave(bar).
>
>  if master(foo) is down, slave(bar) become new master.
>
>  and re-start memcached at foo as slave.
>  foo$ ./memcached -x bar   (start as slave and connect to master(bar))
>
>  all data which master(bar) have will copy to new slave(foo), then  
> master
>  and slave have same data.
>
>
> -- 
> HIROSE Masaaki



More information about the memcached mailing list