【问题标题】:Combine multiple applications into single binary将多个应用程序合并为单个二进制文件
【发布时间】:2020-02-14 06:32:08
【问题描述】:

假设我有四个应用程序:

  1. http-网关
  2. NATS
  3. 业务逻辑客户端
  4. 业务逻辑服务器
Gateway <--> NATS <---> B.L.

我的项目结构如下:

nats-cluster\
  cmd\
    gateway\gatway.go
    blclient\blclient.go
    blserver\blserver.go
  gateway\
  blclient\
  blserver\

目前,我必须分别运行其中四个,然后它们才能相互交谈。 网关和 BLclient 使用request-reply 模式,而blclient 使用grpcblserver 交换消息。 我想知道是否有任何方法可以在 Go 中生成单个二进制文件,以便应用程序可以通过单个二进制文件运行。

有没有办法在 Go 中将多个应用程序二进制文件合并为一个?

【问题讨论】:

  • 合并成一个二进制文件是什么意思?提取其他二进制文件的二进制文件、部署包、启动脚本?您想解决什么业务需求?
  • 所以你有四个独立的应用程序,它们通过一些 IPC(管道或其他东西)相互通信.. ??我不认为你可以将你的 exe 合并到一个 exe 中..
  • 高效的做法是:摆脱单个组件并重构为一个整体。如果那是你想要的。
  • 然后将它们捆绑在一起也没有意义。
  • 作为@Volker,唯一可能的方法是将代码组合起来并将它们构建成一个二进制文件。我认为不可能采用单独的二进制文件 -> 组合 'em -> 并将它们作为单独的组件运行。

标签: go executable grpc nats.io


【解决方案1】:

我在 Simple IoT 应用程序中嵌入了 NATS 服务器。这是我的做法:

https://github.com/simpleiot/simpleiot/blob/master/cmd/siot/main.go#L452

https://github.com/simpleiot/simpleiot/blob/master/natsserver/nats-server.go

效果很好,而且超级容易做。

对于某些应用程序,将所有内容捆绑在一个 Go 应用程序中是有意义的,因为部署要简单得多。

【讨论】:

    猜你喜欢
    • 2020-09-14
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2014-05-15
    • 2015-07-24
    相关资源
    最近更新 更多