TODO: Add description
If available in Hex, the package can be installed
by adding iasc_raft
to your list of dependencies in mix.exs
:
def deps do
[
{:iasc_raft, "~> 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/iasc_raft.
hay que levantar los nodos y crear un actor en cada uno...
$ iex --sname a -S mix
iex(a@mymachine)> {:ok, _pid} = Raft.start_peer(KVStore, name: :peer1)
$ iex --sname b -S mix
iex(b@mymachine)> {:ok, _pid} = Raft.start_peer(KVStore, name: :peer2)
$ iex --sname c -S mix
iex(c@mymachine)> {:ok, _pid} = Raft.start_peer(KVStore, name: :peer3)
Raft.set_configuration(:peer1,
[{ :peer1, :a@altair },
{ :peer2, :b@altair },
{ :peer3, :c@altair }])
elegir un lider...
leader = Raft.leader(:peer1)
escribir/leer valores
{:ok, :foo, :bar} = KVStore.write(leader, :foo, :bar)
{:ok, :bar} = KVStore.read(leader, :foo)
{:error, :key_not_found} = KVStore.read(leader, :baz)
y ahora.. matar al lider
Raft.stop_peer(leader)
veamos que pasa si tratamos de leer algo...
KVStore.read(leader, :foo)
{ :error, { :redirect, { :peer3, :c@altair }}}
veamos ahora si el nuevo lider es digno...
new_leader = { :peer3, :c@altair }
{:ok, :bar} = KVStore.read(new_leader, :foo)