我应该为共享的 Docker 依赖项提供服务吗?



我有 3 种不同的服务使用 GraphicsMagick 作为依赖项,我只是从 Docker 开始。所以我想知道,我是否应该为 GraphicsMagick 制作一个单独的轻量级 API(也许使用 PHP)并将其放在单独的 Docker 容器中?因为GraphicsMagick只是一个可执行文件。

或者它会很慢,最好的方法是安装 GraphicsMagick 作为每个服务容器的依赖项?

谢谢!

正如评论和您最初的问题中所述,这里有两种方法。一种是只在基本映像或单个服务映像中安装 GraphicsMagick。另一种是构建特定于GraphicsMagick的单独服务(一种工作线程或图像处理API)。我想答案将取决于现在对您最重要的利弊。

基础映像中的图形魔术具有易于实现的优点。您不必构建额外的东西。GraphicsMagick二进制文件安装起来应该不会太麻烦,并且可能只会为最终生成的图像增加几MB的大小。

使用 GraphicsMagick 构建单独的 API 服务映像会产生开发时间和服务复杂性的开销。您可能还需要使用此模型实现某种服务发现,以便其他服务映像知道如何访问此新 API。不过,在未来,这将是更具可扩展性的模型。根据负载所在的位置,这有助于单独扩展其他服务容器,如果需要,还可以在单独的主机上运行,尤其是当映像处理可以使用 CPU 并使其他服务匮乏时。

所以我会问自己这些问题:

  • 您能负担得起额外的开发时间吗?
  • 应用程序是否需要这种单独的可伸缩性?
  • 管理可能还需要一些服务发现的其他服务没有问题吗?

如果您对所有这些问题的回答都是肯定的,那么您可能会为此构建一个单独的服务。Docker绝对适合面向服务的架构,这可能是构建应用程序的更正确方法。但是,对于"正常工作"并且现在需要最少时间实施的东西,可以说很多话,特别是如果它可以在很长一段时间内正常工作。

最新更新