Lacque: Yet Another Implementation of Google's Chubby in Erlang

Lacque is yet another implemetation of Google's Chubby clone written in Erlang. Chubby is a coarse-grained lock service system with ultra-high availability and low network traffic, mainly used for BigTable. Apparent characteristics of Erlang makes whole implementation so easy.

  • generic TCP and networking BIFs
    • +Ktrue option enables users to solve C10K problem without any epoll
  • lightweight user-land process enables concurrent programming.
    • 1024 processes created very easily
    • concurrent contexts and implemented processes easily correspond (OS-enabled pthreading has limitation in #of concurrent contexts)
    • Chubby supports keeping TCP session with 10000 clients and processes session-related annoying tasks; while Lacque simply creates 10000 processes corresponding with each session and reading/writing TCP socket, waiting for timeout.
  • mnesia: good key-value storage system (in BIF!)
    • originally Chubby used BerkeleyDB for its data storage

What is different from Chubby : Disadvantages and disadvantages

  1. Small code. Easy to understand.
  2. No clients other than written in Erlang supported yet (if needed, thrift will realize compatibility)
  3. No Events tested yet.
  4. No Replication/Master Election supported YET.
  5. No Failover supported yet.
  6. Shared Lock is not required.
  7. No Proxies.

New committers will be welcomed

  1. person who likes Erlang
  2. person who likes distributed coordination systems
  3. googler involved in Chu^H^H^H