Arkitekturdiagram
Arkitekturdiagram används för att visa relationer mellan tjänster och resurser som är vanliga i moln- eller CI/CD-distributioner. I ett arkitekturdiagram förbinds tjänster (noder) med linjer. Relaterade tjänster kan placeras i grupper för att bättre visa hur de organiseras.
Exempel
Kopiera
Bädda in
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
Syntax
Arkitekturdiagrammets byggstenar är: grupper, tjänster, förbindelselinjer och anslutningspunkter.
För komponenter som stöds deklareras ikoner genom att omge ikonen med parenteser (), medan etiketter deklareras genom att omge texten med hakparenteser [].
För att börja ett arkitekturdiagram behöver du använda syntaxen architecture-beta och sedan lista grupper, tjänster, förbindelselinjer och anslutningspunkter. Även om dessa 3 byggstenar kan deklareras i valfri ordning, måste du se till att identifieraren redan har deklarerats av en annan komponent tidigare.
Grupp
Syntaxen för att deklarera en grupp är:
Kopiera
Bädda in
group {group id}({icon name})[{title}] (in {parent id})?
Kombinerat:
Kopiera
Bädda in
group public_api(cloud)[Public API]
Skapade en grupp som heter public_api, med ikonen cloud och etiketten Public API.
Dessutom kan grupper placeras i en annan grupp med den valfria in -syntaxen.
Kopiera
Bädda in
group private_api(cloud)[Private API] in public_api
Tjänst
Syntaxen för att deklarera en tjänst är:
Kopiera
Bädda in
service {service id}({icon name})[{title}] (in {parent id})?
Kombinerat:
Kopiera
Bädda in
service database1(database)[My Database]
Skapa en tjänst som heter database1, med ikonen database och etiketten My Database.
Om tjänsten tillhör en grupp kan den placeras i den med den valfria in -syntaxen
Kopiera
Bädda in
service database1(database)[My Database] in private_api
Förbindelselinje
Syntaxen för att deklarera en förbindelselinje är:
Kopiera
Bädda in
{serviceId}{{group}}?:{T|B|L|R} {<}?--{>}? {T|B|L|R}:{serviceId}{{group}}?
Förbindelselinjens riktning
Vilken sida av tjänsten linjen utgår från kan anges genom att lägga till ett kolon : på den sida av anslutningspilen som hör till tjänsten och lägga till L|R|T|B.
Till exempel:
Kopiera
Bädda in
db:R -- L:server
Skapa en förbindelselinje mellan tjänsterna db och server, som sträcker sig från db:s högra sida till server:s vänstra sida.
Kopiera
Bädda in
db:T -- L:server
Skapa en 90-graders förbindelselinje mellan tjänsterna db och server, som utgår från db:s överkant och server:s vänstra sida.
Pil
Genom att lägga till < före riktningen till vänster eller > efter riktningen till höger kan pilar läggas till på vardera sidan av förbindelselinjen.
Till exempel:
Kopiera
Bädda in
subnet:R --> L:gateway
Skapa en förbindelselinje med en pil som pekar mot tjänsten gateway.
Förbindelselinjer utanför grupper
För att en förbindelselinje ska övergå från en grupp till en annan grupp eller till en tjänst i en annan grupp kan du lägga till en {group} -modifierare efter serviceId.
Till exempel:
Kopiera
Bädda in
service server[Server] in groupOne
service subnet[Subnet] in groupTwo
server{group}:B --> T:subnet{group}
Skapa en förbindelselinje som utgår från groupOne, ansluter till server i dess närhet och sedan går in i groupTwo och ansluter till subnet i dess närhet.
Observera att groupId inte kan användas för att ange förbindelselinjer, och {group} -modifieraren kan endast användas för tjänster inom en grupp.
Anslutningspunkt
En anslutningspunkt är en speciell typ av nod som kan fungera som en potentiell fyrvägsförgrening för förbindelselinjer.
Syntaxen för att deklarera en anslutningspunkt är:
Kopiera
Bädda in
junction {junction id} (in {parent id})?
Kopiera
Bädda in
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