架构图
架构图用于展示云端或 CI/CD 部署中常见的服务和资源之间的关系。在架构图中,服务(节点)通过线条连接。相关服务可以放在组中,以更好地说明它们的组织方式。
示例
复制
嵌入
architecture-beta
group api(cloud)[API]
service db(database)[Database] in api
service disk1(disk)[Storage] in api
service disk2(disk)[Storage] in api
service server(server)[Server] in api
db:L -- R:server
disk1:T -- B:server
disk2:T -- B:db
语法
架构图的构建块是:群组、服务、连线和连接点。
对于支持组件,图标使用小括号 () 将图标括起来来声明,而标签使用中括号 [] 将文本括起来来声明。
要开始架构图,需要使用 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
在服务 db 和 server 之间创建一条连线,这条连线从 db 的右侧延伸到 server 的左侧。
复制
嵌入
db:T -- L:server
在服务 db 和 server 之间创建一个 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})?
复制
嵌入
architecture-beta
service left_disk(disk)[Disk]
service top_disk(disk)[Disk]
service bottom_disk(disk)[Disk]
service top_gateway(internet)[Gateway]
service bottom_gateway(internet)[Gateway]
junction junctionCenter
junction junctionRight
left_disk:R -- L:junctionCenter
top_disk:B -- T:junctionCenter
bottom_disk:T -- B:junctionCenter
junctionCenter:R -- L:junctionRight
top_gateway:B -- T:junctionRight
bottom_gateway:T -- B:junctionRight