From a8e3f42b84c39a23be691ebf6033448c05dfae90 Mon Sep 17 00:00:00 2001 From: fxli Date: Wed, 30 Nov 2022 15:06:57 +0800 Subject: [PATCH] add architecture doc --- docs/dsms-engine/design/architecture.md | 6 ++++++ docs/dsms-engine/images/architecture.png | Bin 0 -> 33827 bytes 2 files changed, 6 insertions(+) create mode 100644 docs/dsms-engine/design/architecture.md create mode 100644 docs/dsms-engine/images/architecture.png diff --git a/docs/dsms-engine/design/architecture.md b/docs/dsms-engine/design/architecture.md new file mode 100644 index 0000000..2907a93 --- /dev/null +++ b/docs/dsms-engine/design/architecture.md @@ -0,0 +1,6 @@ +# 整体技术架构设计 + +DSMS一个基于web页面的分布式存储集群管理和监控应用系统,通过该系统可以检查和管理分布式存储集群中的各类资源,如节点管理、存储池管理、块存储管理、文件系统存储管理功能。系统采用前后端分离架构,前端使用vue框架,后端使用spring boot框架,封装REST API提供功能支持,并使用任务管理器实现任务的同步/异步调用及任务监视功能。 + +其技术架构如下图所示: +![architecture](../images/architecture.png) diff --git a/docs/dsms-engine/images/architecture.png b/docs/dsms-engine/images/architecture.png new file mode 100644 index 0000000000000000000000000000000000000000..f89facd15fb373e85140a9f461428efd8a32553d GIT binary patch literal 33827 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

7|(EA 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 SmkJ#Cb45!}vjk-s{(k@`IwR}= literal 0 HcmV?d00001 -- Gitee