Update zebra-network Monodraw diagram.
Also, add the source file to the repo.
This commit is contained in:
parent
bb77e509ea
commit
d8ba22e7a2
|
@ -1,75 +0,0 @@
|
|||
──────▶ Channel
|
||||
Legend:
|
||||
━━━━━━▶ Service call
|
||||
|
||||
┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐
|
||||
│ PeerServer │ │ PeerServer │ │ PeerServer │ │ PeerServer │
|
||||
│ ┌───────┐ │ │ ┌───────┐ │ │ ┌───────┐ │ │ ┌───────┐ │
|
||||
│ │┌─────┐│ │ │ │┌─────┐│ │ │ │┌─────┐│ │ │ │┌─────┐│ │
|
||||
│ ││ Tcp ││ │ │ ││ Tcp ││ │ │ ││ Tcp ││ │ │ ││ Tcp ││ │
|
||||
│ │└─────┘│───┼┐ │ │└─────┘│───┼┐ │ │└─────┘│───┼┐ │ │└─────┘│───┼┐
|
||||
│ │Framed │ ││ │ │Framed │ ││ │ │Framed │ ││ │ │Framed │ ││
|
||||
│ │Stream │ ││ │ │Stream │ ││ │ │Stream │ ││ │ │Stream │ ││
|
||||
│ └───────┘ ││ │ └───────┘ ││ │ └───────┘ ││ │ └───────┘ ││
|
||||
┏▶│ ┃ ││ ┏▶│ ┃ ││ ┏▶│ ┃ ││ ┏▶│ ┃ ││
|
||||
┃ │ ┃ ││ ┃ │ ┃ ││ ┃ │ ┃ ││ ┃ │ ┃ ││
|
||||
┃ │ ▼ ││ ┃ │ ▼ ││ ┃ │ ▼ ││ ┃ │ ▼ ││
|
||||
┃ │ ┌───────┐ ││ ┃ │ ┌───────┐ ││ ┃ │ ┌───────┐ ││ ┃ │ ┌───────┐ ││
|
||||
┃ │ │ Tower │ ││ ┃ │ │ Tower │ ││ ┃ │ │ Tower │ ││ ┃ │ │ Tower │ ││
|
||||
┃ │ │Buffer │ ││ ┃ │ │Buffer │ ││ ┃ │ │Buffer │ ││ ┃ │ │Buffer │ ││
|
||||
┃ │ └───────┘ ││ ┃ │ └───────┘ ││ ┃ │ └───────┘ ││ ┃ │ └───────┘ ││
|
||||
┃ │ ┃ ││ ┃ │ ┃ ││ ┃ │ ┃ ││ ┃ │ ┃ ││
|
||||
┃ └─────╋───────┘│ ┃ └─────╋───────┘│ ┃ └─────╋───────┘│ ┃ └─────╋───────┘│
|
||||
┃ ┃ └─╋───────╋────────┴─╋───────╋────────┴─╋───────╋────────┴─┐
|
||||
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
|
||||
┃ ┗━━━━━━━━━━╋━━━━━━━┻━━━━━━━━━━╋━━━━━━━┻━━━━━━━━━━╋━━━━━━━┻━━━━━━━━━━╋━┓
|
||||
┃ ┃ ┃ ┃ │ ┃
|
||||
┗━━━━━━━━┓ ┗━━━━━━━━┓ ┗━━━━━━━━┓ ┗━━━━━━━━┓ │ ┃
|
||||
┌───────╋──────────────────╋──────────────────╋──────────────────╋───────┐ │ ┃
|
||||
│ ┃ ┃ ┃ ┃ │ │ ┃
|
||||
│┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ │ ┃
|
||||
││ PeerClient │ │ PeerClient │ │ PeerClient │ │ PeerClient ││ │ ┃
|
||||
│└─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘│ │ ┃
|
||||
│ │ │ ┃
|
||||
│ PeerSet │ │ ┃
|
||||
│ req: Request, rsp: Response │ │ ┃
|
||||
│ routes all outgoing requests, adds peers to handle load │ │ ┃
|
||||
└─────────────────────────────────────────────────────────┬──────────────┘ │ ┃
|
||||
▲ │ │ ┃
|
||||
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ │ │ ┃
|
||||
┃ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━╋━┛
|
||||
┃ ▼ │ │
|
||||
┃ ┌────────────────────────────────┐ ┌────────────────────────────┐ │
|
||||
┃ │ Router │ │ PeerDiscover │ │
|
||||
┃ │ req: Request, rsp: Response │ │Discover<Service=PeerClient>│ │
|
||||
┃ │ routes all incoming requests, │ │ │ │
|
||||
┃ │ removes peers to shed load │ │ connects to a remote peer, │ │
|
||||
┃ │ │ │ constructs client/server │ │
|
||||
┃ │ │ └────────────────────────────┘ │
|
||||
┃ │ │ ┃ ▲ │
|
||||
┃ └────────────────────────────────┘ ┃ └─────┐ │
|
||||
┃ ┃ ┃ │ │
|
||||
┃ ┃ ┃ ┌───────────────┐ │
|
||||
┃ ┃ ┃ │ PeerListener │ │
|
||||
┃ ┃ ┃ │ req: ? │ │
|
||||
┃ ┃ ┃ │rsp: PeerClient│ │
|
||||
┃ ┃ ┃ └───────────────┘ │
|
||||
┃ ┃ ┃ ┌───────────────┐ │
|
||||
┃ ┃ ┃ │ PeerConnector │ │
|
||||
┃ ┃ ┗━━━━▶│req: SocketAddr│ │
|
||||
┃ ┃ │rsp: PeerClient│ │
|
||||
┃ ┃ └───────────────┘ │
|
||||
┃ ┃ ┃ │
|
||||
┃ ┃ ▼ │
|
||||
┃ ┃ ┌───────────────┐ │
|
||||
┃ ┃ ┌───────────────┐ │ NextAddress │ │
|
||||
┗━━━━━━━━━━━━━━━━━━━━━╋━━━━━│ AddrCrawler │─────────▶│ req: () │ │
|
||||
┃ └───────────────┘ │rsp: SocketAddr│ │
|
||||
┃ └───────────────┘ │
|
||||
┃ ▲ │
|
||||
┃ │ │
|
||||
┃ ┌───────────────┐ ┌───────────────┐ │
|
||||
┃ │ AddrService │ │ AddressBook │ │
|
||||
┗━━━━▶│ req: GetPeers │◀─────────│ our per-peer │◀─┘
|
||||
│ rsp: Peers │ │last-seen info │
|
||||
└───────────────┘ └───────────────┘
|
Binary file not shown.
|
@ -0,0 +1,77 @@
|
|||
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
|
||||
│PeerServer │ │PeerServer │ │PeerServer │ │PeerServer │
|
||||
│ ┌───────┐ │ │ ┌───────┐ │ │ ┌───────┐ │ │ ┌───────┐ │
|
||||
│ │┌─────┐│ │ │ │┌─────┐│ │ │ │┌─────┐│ │ │ │┌─────┐│ │
|
||||
│ ││ Tcp ││ │ │ ││ Tcp ││ │ │ ││ Tcp ││ │ │ ││ Tcp ││ │
|
||||
│ │└─────┘│ │ │ │└─────┘│ │ │ │└─────┘│ │ │ │└─────┘│ │
|
||||
│ │Framed │ │ │ │Framed │ │ │ │Framed │ │ │ │Framed │ │
|
||||
│ │Stream │ │ │ │Stream │ │ │ │Stream │ │ │ │Stream │ │
|
||||
│ └───────┘─┼─┐ │ └───────┘─┼─┐ │ └───────┘─┼─┐ │ └───────┘─┼─┐
|
||||
┏▶│ ┃ │ │ ┏▶│ ┃ │ │ ┏▶│ ┃ │ │ ┏▶│ ┃ │ │
|
||||
┃ │ ┃ │ │ ┃ │ ┃ │ │ ┃ │ ┃ │ │ ┃ │ ┃ │ │
|
||||
┃ │ ▼ │ │ ┃ │ ▼ │ │ ┃ │ ▼ │ │ ┃ │ ▼ │ │
|
||||
┃ │ ┌───────┐ │ │ ┃ │ ┌───────┐ │ │ ┃ │ ┌───────┐ │ │ ┃ │ ┌───────┐ │ │
|
||||
┃ │ │ Tower │ │ │ ┃ │ │ Tower │ │ │ ┃ │ │ Tower │ │ │ ┃ │ │ Tower │ │ │
|
||||
┃ │ │Buffer │ │ │ ┃ │ │Buffer │ │ │ ┃ │ │Buffer │ │ │ ┃ │ │Buffer │ │ │
|
||||
┃ │ └───────┘ │ │ ┃ │ └───────┘ │ │ ┃ │ └───────┘ │ │ ┃ │ └───────┘ │ │
|
||||
┃ │ ┃ │ │ ┃ │ ┃ │ │ ┃ │ ┃ │ │ ┃ │ ┃ │ │
|
||||
┃ └─────╋─────┘ │ ┃ └─────╋─────┘ │ ┃ └─────╋─────┘ │ ┃ └─────╋─────┘ │
|
||||
┃ ┃ └─╋───────╋───────┴─╋───────╋───────┴─╋───────╋───────┴───────┐
|
||||
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
|
||||
┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ │
|
||||
┃ ┗━━━━━━━━━╋━━━━━━━┻━━━━━━━━━╋━━━━━━━┻━━━━━━━━━╋━━━━━━━┻━━━━━━━━━┓ │
|
||||
┗━━━━━━━┓ ┗━━━━━━━┓ ┗━━━━━━━┓ ┗━━━━━━━┓ ┃ │
|
||||
┌──────╋─────────────────╋─────────────────╋─────────────────╋──────┐ ┃ │
|
||||
│ ┃ ┃ ┃ ┃ │ ┃ │
|
||||
│┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐│ ┃ │
|
||||
││PeerClient │ │PeerClient │ │PeerClient │ │PeerClient ││ ┃ │
|
||||
│└───────────┘ └───────────┘ └───────────┘ └───────────┘│ ┃ │
|
||||
│ │ ┃ │
|
||||
│┌──────┐ ┌──────────────┐ │ ┃ │
|
||||
││ load │ │peer discovery│ PeerSet│ ┃ │
|
||||
││signal│ ┏━▶│ receiver │ req: Request, rsp: Response│ ┃ │
|
||||
│└──────┘ ┃ └──────────────┘ routes all outgoing requests│ ┃ │
|
||||
│ ┃ ┃ adds peers via discovery│ ┃ │
|
||||
└────╋──────╋───────────────────────────────────────────────────────┘ ┃ │
|
||||
┃ ┃ ▲ ┃ │
|
||||
┃ ┣━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ ┃ │
|
||||
┃ ┃ ┏━━━━━━━━━━━╋━━━━━━━━━━━━━╋━━━━━━━━━━━━━┫ ┃ │
|
||||
▼ ┃ ┃ ┃ ┃ ┃ ┃ │
|
||||
┌────────────────╋───┐┌────────────┐┌─────────────┐ ┃ ┃ │
|
||||
│Crawler ┃ ││ Listener ││Initial Peers│ ┃ ┃ │
|
||||
│ ┌──────┐││ ││ │ ┃ ┃ │
|
||||
│ │Tower │││ ││ │ ┃ ┃ │
|
||||
│ │Buffer│││listens for ││ connects on │ ┃ ┃ │
|
||||
│ └──────┘││ incoming ││ launch to │ ┃ ┃ │
|
||||
│uses peerset to ││connections,││ seed peers │ ┃ ┃ │
|
||||
│crawl network, ││ sends ││specified in │ ┃ ┃ │
|
||||
│maintains candidate ││ handshakes ││ config file │ ┃ ┃ │
|
||||
│peer set, connects ││ to peer ││ to build │ ┃ ┃ │
|
||||
│to new peers on load││ discovery ││initial peer │ ┃ ┃ │
|
||||
│signal or timer ││ receiver ││ set │ ┃ ┃ │
|
||||
└────────────────────┘└────────────┘└─────────────┘ ┃ ┃ │
|
||||
│ zebra-network internals ┃ ┃ │
|
||||
─ ─ ─ ─ ─ ─ ─│─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─┃─ ─ ─ ─ ─ ─ ╋ ─ ─ ┼
|
||||
│ exposed api ┃ ┃ │
|
||||
│ ┌────────────────────────┐ ┃ ┃ │
|
||||
│ │Arc<Mutex<AddressBook>> │ ┃ ┃ │
|
||||
│ │last-seen timestamps for│ ┃ ┃ │
|
||||
└─────────────│ each peer, obtained by │◀─────╋────────────╋─────┘
|
||||
│ hooking into incoming │ ┃ ┃
|
||||
│ message streams │ ┃ ┃
|
||||
└────────────────────────┘ ┃ ▼
|
||||
┌────────────────┐┌───────────────┐
|
||||
│Outbound Service││Inbound Service│
|
||||
│ req: Request, ││ req: Request, │
|
||||
│ rsp: Response ││ rsp: Response │
|
||||
│ ││ │
|
||||
│ Tower Buffer ││ routes all │
|
||||
└────────────────┘│ incoming │
|
||||
│requests, uses │
|
||||
│ load-shed │
|
||||
│ middleware to │
|
||||
│ remove peers │
|
||||
│ when internal │
|
||||
│ services are │
|
||||
│ overloaded │
|
||||
└───────────────┘
|
Loading…
Reference in New Issue