● inspired by the consistent hash-ring approach
used to allocate nodes to conductors in Ironic
● the key idea is to allow the central agents to self-
organize while sharing minimal information
● “blissful ignorance” is the key phrase in the BP
How does it work?
● multiple central agents start up
● tooz group membership primitives allow each
agent to be aware of the existence of its peers
● an identical set of discovery extensions are
loaded by each agent
● each discoverer attempts to discover all the
● but only polls the subset of those resources that
it’s been assigned
Wait a minute, how does the agent know
which resources it’s been assigned?
● each discovered resource has a resource ID
○ maybe a UUID, or IP addr, or something fabricated
● each individual agent uses its knowledge of the
cardinality of the agent pool to size a bucket list
● we rely on the uniform distribution property of the
● so each agent can answer the question
independently: am I responsible for this thing?
What happens when an agent dies?
Or a fresh agent is started?
● each agent registers a tooz group membership
callback so is informed when the pool of live
● on join/leave events, the hash bucket-list is
● on the next polling cycle, each agent carves out
a different disjoint subset to what went before
● overall we achieve coverage of all resources,
modulo a single polling cycle
What are the keys win for this approach?