×

Go-Diagrams用Go创建系统图表

消耗积分:2 | 格式:zip | 大小:36.77 MB | 2022-05-30

分享资料个

授权协议 MIT
开发语言 Google 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)
}

输出图片:

poYBAGKCQ-eAcIZvAADqVtJLe44588.png

 

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !