diff --git a/docs/source/_static/images/dispatch.png b/docs/source/_static/images/dispatch.png new file mode 100644 index 000000000..11d2c6567 Binary files /dev/null and b/docs/source/_static/images/dispatch.png differ diff --git a/docs/source/_static/images/route.png b/docs/source/_static/images/route.png index 95265635e..f53d0c90a 100644 Binary files a/docs/source/_static/images/route.png and b/docs/source/_static/images/route.png differ 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.