Go-Diagrams用 Go 创建系统图表
Go-Diagrams 是一个松散的图表端口,可以用 go 编程来画出漂亮的图表。
用法
go get github.com/blushft/go-diagrams
创建图形:
d, err := diagram.New(diagram.Label("my-diagram"), diagram.Filename("diagram"))
if err != nil {
log.Fatal(err)
}
fw := generic.Network.Firewall().Label("fw")
sw := generic.Network.Switch().Label("sw")
d.Connect(fw, sw)
渲染输出:
if err := d.Render(); err != nil {
log.Fatal(err)
}
Go-Diagrams 会在当前工作目录中创建一个包含 graphviz.DOT 文件和图像资源的文件夹。
使用任何兼容 graphviz 的渲染器创建输出图像:
dot -Tpng diagram.dot > diagram.png
用例
输入
d, err := diagram.New(diagram.Filename("app"), diagram.Label("App"), diagram.Direction("LR"))
if err != nil {
log.Fatal(err)
}
dns := gcp.Network.Dns(diagram.NodeLabel("DNS"))
lb := gcp.Network.LoadBalancing(diagram.NodeLabel("NLB"))
cache := gcp.Database.Memorystore(diagram.NodeLabel("Cache"))
db := gcp.Database.Sql(diagram.NodeLabel("Database"))
dc := diagram.NewGroup("GCP")
dc.NewGroup("services").
Label("Service Layer").
Add(
gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 1")),
gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 2")),
gcp.Compute.ComputeEngine(diagram.NodeLabel("Server 3")),
).
ConnectAllFrom(lb.ID(), diagram.Forward()).
ConnectAllTo(cache.ID(), diagram.Forward())
dc.NewGroup("data").Label("Data Layer").Add(cache, db).Connect(cache, db)
d.Connect(dns, lb, diagram.Forward()).Group(dc)
if err := d.Render(); err != nil {
log.Fatal(err)
}
输出图片:
评论
