12. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
Command: GetChildren
Path: /id-worker/1
Watch: True
Router
Datacenter 1
root node
command/event
watch
13. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
Command: GetChildren
Path: /id-worker/1
Watch: True
Router
command/event
watch
14. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
Command: Create
Path: /id-worker/1/1
Data: akka.tcp://system@11.2.9.14:***
mode: Ephemeral
Router
command/event
watch
15. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
Event: NodeChildrenChanged
Path: /id-worker/1
Router
command/event
watch
16. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
Command: GetChildren
Path: /id-worker/1
Watch: True
Router
command/event
watch
17. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
Command: GetData
Path: /id-worker/1/1
Watch: False
Router
command/event
watch
18. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
Identify
Router
command/event
watch
19. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ActorIdentity worker1
Router
command/event
watch
20. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID request/response
worker1
Router
command/event
watch
21. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID
worker
Command: GetChildren
Path: /id-worker/1
Watch: True
worker1
Router
command/event
watch
22. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID
worker
/id-worker/1/2 akka.tcp://system@11.2.9.15:***
Command: Create
Path: /id-worker/1/2
Data: akka.tcp://system@11.2.9.15:***
mode: Ephemeral
worker1
Router
command/event
watch
23. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID
worker
/id-worker/1/2 akka.tcp://system@11.2.9.15:***
Event: NodeChildrenChanged
Path: /id-worker/1
worker1
Router
command/event
watch
24. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID
worker
/id-worker/1/2 akka.tcp://system@11.2.9.15:***
Command: GetChildren
Path: /id-worker/1
Watch: True
worker1
Router
command/event
watch
25. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID
worker
/id-worker/1/2 akka.tcp://system@11.2.9.15:***
Command: GetData
Path: /id-worker/1/2
Watch: False
worker1
Router
command/event
watch
26. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
ID
worker
/id-worker/1/2 akka.tcp://system@11.2.9.15:***
Identify worker1
Router
command/event
watch
27. ID worker discovery via ZooKeeper
ZooKeeper
ID
client
/id-worker/1
ID
worker
/id-worker/1/1 akka.tcp://system@11.2.9.14:***
worker1ID
worker
/id-worker/1/2 akka.tcp://system@11.2.9.15:***
ActorIdentity
worker2
Router
command/event
watch
31. Worker ID Consensus process
1. No worker ID duplication invariant
ZooKeeper
/id-worker/1
ID
worker
Command: GetChildren
Path: /id-worker/1
Watch: True
command/event
watch