流程類
圖形化表達方式
思維類
結構化表達方式
筆記類
高效化表達方式

架構圖語法

架構圖

架構圖用於展示雲端或 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