Skip to content

架构图文档 (v11.1.0+)

在mermaid-js的上下文中,架构图用于展示云或CI/CD部署中常见的服务和资源之间的关系。在架构图中,服务(节点)通过边连接。相关的服务可以分组放置,以更好地说明它们是如何组织的。

示例

语法

架构的基本组成部分是groupsservicesedgesjunctions

对于支持组件,图标通过在图标名称周围加上()来声明,而标签则通过在文本周围加上[]来声明。

要开始一个架构图,请使用关键字architecture-beta,然后是你的组、服务、边和连接点。虽然这3个构建块可以以任何顺序声明,但必须注意确保标识符已被另一个组件先前声明。

声明一个组的语法是:

group {group id}({icon name})[{title}] (in {parent id})?

整合在一起:

group public_api(cloud)[Public API]

创建一个标识为 public_api 的组,使用图标 cloud,并具有标签 Public API

此外,可以使用可选的in关键字将组放置在组内

group private_api(cloud)[Private API] in public_api

服务

声明服务的语法是:

service {service id}({icon name})[{title}] (in {parent id})?

整合在一起:

service database1(database)[My Database]

创建标识为 database1 的服务,使用图标 database,标签为 My Database

如果服务属于一个组,可以通过可选的in关键字将其放置在组内

service database1(database)[My Database] in private_api

声明边的语法是:

{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?

边方向

服务边缘出来的那一侧是通过在连接到箭头的服务侧添加冒号(:)并添加L|R|T|B来指定的。

例如:

db:R -- L:server

在服务dbserver之间创建一条边,边从db的右侧出来,进入server的左侧。

db:T -- L:server

在服务dbserver之间创建一个90度的边,边从db的顶部和server的左侧出来。

箭头

可以通过在左侧方向前添加<,和/或在右侧方向后添加>来为边的每一侧添加箭头。

例如:

subnet:R --> L:gateway

创建一个箭头指向gateway服务的边

组外边缘

要使一个边从一个组指向另一个组或另一个组内的服务,可以在serviceId后添加{group}修饰符。

例如:

service server[Server] in groupOne
service subnet[Subnet] in groupTwo

server{group}:B --> T:subnet{group}

创建一个从groupOne出发,连接到server,并进入groupTwo,连接到subnet的边。

需要注意的是,groupId不能用于指定边,而{group}修饰符只能用于组内的服务。

连接点

连接点是一种特殊类型的节点,它在边之间充当潜在的四向分割。

声明一个连接的语法是:

junction {junction id} (in {parent id})?

图标

默认情况下,架构图支持以下图标:clouddatabasediskinternetserver。用户可以使用iconify.design中提供的20万多个图标中的任意一个,或者按照这里的步骤添加自己的自定义图标。

图标安装后,可以通过使用格式“name:icon-name”在架构图中使用,其中name是注册图标包时使用的值。