From d75d3719e10fbf88979d9705742dc6a41cc9474e Mon Sep 17 00:00:00 2001 From: Feng Date: Sat, 2 Apr 2016 14:40:54 +0800 Subject: [PATCH] add dispatch, route images --- docs/source/_static/images/dispatch.png | Bin 0 -> 10582 bytes docs/source/_static/images/route.png | Bin 21184 -> 19104 bytes docs/source/design.rst | 6 +++++- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 docs/source/_static/images/dispatch.png diff --git a/docs/source/_static/images/dispatch.png b/docs/source/_static/images/dispatch.png new file mode 100644 index 0000000000000000000000000000000000000000..11d2c6567ec1054f275db26665ffa52da6c0616c GIT binary patch literal 10582 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 fFq&un@~V{8%ZFG^;Wxp&T_sS;ON|H@@j`RBc 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 literal 21184 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 diff --git a/docs/source/design.rst b/docs/source/design.rst index e59fbacc2..152110769 100644 --- a/docs/source/design.rst +++ b/docs/source/design.rst @@ -177,7 +177,11 @@ For example, if node1 subscribed 't/+/x' and 't/+/y', node2 subscribed 't/#' and | t/a -> node3 | ------------------------- -The routing layer would route MQTT messages between clustered nodes by topic trie match and routing table lookup, and follow the rules below: +The routing layer would route MQTT messages between clustered nodes by topic trie match and routing table lookup: + +.. image:: _static/images/route.png + +The routing design follows the two rules: 1. A message only gets forwarded to other cluster nodes if a cluster node is interested in it. This reduces the network traffic tremendously, because it prevents nodes from forwarding unnecessary messages.