Replication: Registry again

Same primitive, different domain. ReplFeed is a Registry with one logical topic (:all). Every replica subscribes. Master broadcasts every successful write.

08-replication/server.exs
elixir
defmodule ReplFeed do
  def start_link, do: Registry.start_link(keys: :duplicate, name: __MODULE__)
  def subscribe, do: Registry.register(__MODULE__, :all, nil)
  def broadcast(payload) do
    Registry.dispatch(__MODULE__, :all, fn entries ->
      Enum.each(entries, fn {pid, _} -> send(pid, {:repl, payload}) end)
    end)
  end
end

ReplFeed module wraps Registry.dispatch for the broadcast.

Dispatch.handle/2 takes a role atom: :master or :replica. Master flags broadcast writes to ReplFeed; replica refuses client writes with -READONLY. Same module, one extra argument.

Quiz: Quiz

Loading practice…