New peer architectureΒΆ
Peer
and Broker
derive from
BasePeer
class.
BasePeer
is derived from
ZmqAsyncioTaskManager
.
ZmqAsyncioTaskManager
is derived
from AsyncioTaskManager
.
AsyncioTaskManager
manages a set of
tasks running inside asyncio
message loop. Message loop can be owned by
AsyncioTaskManager
or borrowed. When
message loop is owned new message loop is started in a new thread.
ZmqAsyncioTaskManager
adds ZMQ
asyncio context lifetime management to
AsyncioTaskManager
. ZMQ context can be
borrowed or owned.
BasePeer
extends
ZmqAsyncioTaskManager
by adding
three ZMQ sockets:
- SUB used to receive broadcast messages, connects to Broker’s XPUB
- PUB used to send broadcast messages, connects to Broker’s XSUB
- REP used to answer synchronous messages (messages requiring an answer)
In ZMQ 3+ messages are filtered on PUB socket, so no redundant messages will be sent to clients.
Broker
extends
BasePeer
by adding:
- XPUB/XSUB message proxy
- centralized peer registration authority
- query authority
- heartbeat monitor
Peer
extends BasePeer
by
adding:
- initialization code/Broker connection code
- heartbeat message sending