Skip to content

jlerche/server_wide_clocks

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ServerWideClock

TODO: Add description

Installation

If available in Hex, the package can be installed by adding server_wide_clock to your list of dependencies in mix.exs:

def deps do
  [
    {:server_wide_clock, "~> 0.1.0"}
  ]
end

Documentation can be generated with ExDoc and published on HexDocs. Once published, the docs can be found at https://hexdocs.pm/server_wide_clock.

Reading material

Server wide clocks paper

DottedDB paper

Implementation details

peers(i): Periodically, an anti-entropy protocol is started by a shard/vnode i. Unlike riak_core where each vnode is an erlang process, libring shards are just entries in the ring so the state machine processes here won't be aware which shard it is. A sensible sync period is ~100ms. We can randomly pick a shard that maps to the process and then undergo the usual anti entropy protocol as described in the paper. We can then set the sync period as 100ms/(shard_num). The peers of the shard are then the N-1 leading and trailing shards in the ring, where N is the replication number (separate from the sharding number, which ins libring is the weight).

About

Elixir implementation of server wide clocks

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages