From f0525ea296eb8eb2dfc092e18af86d403efc8fbb Mon Sep 17 00:00:00 2001 From: Feng Lee Date: Sat, 2 May 2015 12:12:10 +0800 Subject: [PATCH] Arch --- doc/Architecture.graphml | 847 +++++++++++++++++++++++++++++++++++++++ doc/Architecture.png | Bin 0 -> 26430 bytes 2 files changed, 847 insertions(+) create mode 100644 doc/Architecture.graphml create mode 100644 doc/Architecture.png diff --git a/doc/Architecture.graphml b/doc/Architecture.graphml new file mode 100644 index 000000000..0e1e06791 --- /dev/null +++ b/doc/Architecture.graphml @@ -0,0 +1,847 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + emqttd cluster + + + + + + + + + + Folder 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + y + + + + + + + + + + + + + + + + + + t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + y + + + + + + + + + + + + + + + + + + t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + y + + + + + + + + + + + + + + + + + + t + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + x + + + + + + + + + + + + + + + + + + y + + + + + + + + + + + + + + + + + + t + + + + + + + + + + + + + + + + + + + + P + + + + + + + + + + + + + + + + + + P + + + + + + + + + + + + + + + + + + S + + + + + + + + + + + + + + + + + + S + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/Architecture.png b/doc/Architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..77c7dcc9e2924440da9ba1f9e81e2c082b874dcb GIT binary patch literal 26430 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 literal 0 HcmV?d00001