Go-Diagrams

用 Go 创建系统图表
授权协议 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)
}

输出图片:

 相关资料
  • 问题内容: 因此,我正在查看文档,并且完全没有使用任何方法的示例。我正在研究使用socks5。该函数的外观如下: 现在一切都说得通了,除了我对哪个是类型感到困惑,函数本身返回了一个。其他一切都有意义,只是前进就把我赶走了。我如何设置我的客户使用socks5 Dialer? 问题答案: 因此,只要有兴趣在此处设置socks5客户的人,我都可以找到我问题的答案:

  • 问题内容: 我正在按照此文档在Windows注册表中使用以下代码片段创建键/字符串: 但没有任何反应,没有任何错误。编辑(说明):在任何情况下均无效。 问题答案: 您仅在获得许可的情况下打开密钥,但是还需要成功调用。 您还应该检查的返回值,这很可能会告知您问题所在。

  • 本文向大家介绍golang实现单点登录系统(go-sso),包括了golang实现单点登录系统(go-sso)的使用技巧和注意事项,需要的朋友参考一下 这是一个基于Go语言开发的单点登录系统,实现手机号注册、手机号+验证码登录、手机号+密码登录、账号登出等功能,用户认证采用cookie和jwt两种方式。收发短信相关方法已提供,仅需根据短信通道提供商提供的接口做相应的参数配置即可使用。 环境介绍 g

  • 问题内容: 我有以下结构: 我使用对其进行编码,然后将其显示在网页上。 该字段必须用括起来。但是,如果我将其写为,则和将转换为和。 如何以最低的成本创建? 问题答案: 如@Tomalak所述,不支持输出CDATA。 您可能可以写为xml标记,以后再替换生成的xml中的结束标记。这对您有用吗?它可能不是成本最低但最简单的一种。当然,您可以在下面的示例中将MarshalIndent调用替换为Marsh

  • 问题内容: 我将CloudFlare用于我的一个高流量网站,它位于堆栈的前面。 关键是CloudFlare除了创建新的连接之外,还保留空闲连接,这不是我可以更改的设置。 当我让Varnish或Nginx坐在前面监听端口80时,它们具有开箱即用的配置来挂断空闲连接。 很好,直到我必须将用Go编写的代理添加到堆栈的最前面。它使用标准库。 我不是Go向导,而是根据人们告诉我的内容,只有读写超时设置,而不

  • Tip ceph fs new 命令是从 Ceph 0.84 起引入的,在此之前,无需手动创建文件系统,名为 data 和 metadata 的存储池默认即存在。 Ceph 命令行现在有了创建和删除文件系统的命令,但是当前一套集群只能有一个文件系统存在。 一个 Ceph 文件系统需要至少两个 RADOS 存储池,一个用于数据、一个用于元数据。配置这些存储池时需考虑: 为元数据存储池设置较高的副本水