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