2. The background
● 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
spec
2
3. 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
resources
● but only polls the subset of those resources that
it’s been assigned
3
4. 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
for hashing
● we rely on the uniform distribution property of the
hashing algorithm
● so each agent can answer the question
independently: am I responsible for this thing?
4
5. 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
agents changes
● on join/leave events, the hash bucket-list is
simply resized
● 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
5
6. What are the keys win for this approach?
● light
● fast
● simple
● ignorant
● thrifty
6