From d8ba22e7a29b31f35e59c731905cb639e091c179 Mon Sep 17 00:00:00 2001 From: Henry de Valence Date: Thu, 24 Oct 2019 11:30:16 -0700 Subject: [PATCH] Update zebra-network Monodraw diagram. Also, add the source file to the repo. --- design/peers.txt | 75 ---------------------------------- design/zebra-network.monopic | Bin 0 -> 6718 bytes design/zebra-network.txt | 77 +++++++++++++++++++++++++++++++++++ 3 files changed, 77 insertions(+), 75 deletions(-) delete mode 100644 design/peers.txt create mode 100644 design/zebra-network.monopic create mode 100644 design/zebra-network.txt diff --git a/design/peers.txt b/design/peers.txt deleted file mode 100644 index 9c73b4b1e..000000000 --- a/design/peers.txt +++ /dev/null @@ -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│ │ - ┃ │ 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 │ - └───────────────┘ └───────────────┘ \ No newline at end of file diff --git a/design/zebra-network.monopic b/design/zebra-network.monopic new file mode 100644 index 0000000000000000000000000000000000000000..36e76e7fa7bda72f932e1cc69dc3d6c08fe4dcbd GIT binary patch literal 6718 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 │ ┃ ┃ │ + │ │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 │ + └───────────────┘ \ No newline at end of file