多个微服务 Symfony 应用共享 vendor 文件夹

3
我们正在开发一个新的Web项目,采用微服务架构。
我们需要大约5个前端Web项目,并且还需要大约5个API微服务来编排API管理器。
我们计划使用Symfony2框架,但我认为它会太重了。我的意思是因为composer实例将从Symfony组件、核心等下载所有相同的库...并且每个项目都使用相同的库(例如phpmailer)。
实际上,我在考虑一个很好的共享策略,假设每个SF2项目都使用共享vendor文件夹,并在一个唯一的文件夹中计算所有库。我们需要每个项目中的每个库都具有相同的版本。
是否有人对这种共享方式有经验?最佳实践是什么?每个项目应该有一个vendor文件夹更好吗?
欢迎讨论!
谢谢。

为什么您不打算在未来的项目中使用SF3或SF4? - Arno
是的,我是指的SF3...不是SF2,抱歉;) - fxlacroix
5
现代磁盘驱动器非常大!当运行“composer”五次几乎不会对您的磁盘空间指示器产生影响时,我不会浪费数小时研究棘手的解决方案! - Ben Hillier
2
一个供应商目录用于多个项目,强制你在所有项目中使用相同版本的依赖项。不能在一个项目中使用twig 1.*,而在另一个项目中使用2.*。这一点和Ben的评论以及composer中下载包的缓存强烈建议每个项目只有一个供应商。 - Joe
是的,正如我所提到的,“我们需要每个项目中每个库的相同版本。”但我理解你的观点。 - fxlacroix
2个回答

1
您可以在composer.json中将供应商目录定义为共享文件夹。
{
    "config": {
        "vendor-dir": "/usr/share/php/composer/vendor"
    }
}

它能帮助你吗?


通过这个想法,vendor-dir 被定义为所有项目的所有包,这是一个过于强制性的限制。 - Arno
是的,这可能是一个很好的主意......我会尝试一下。 - fxlacroix

0

在微服务之间不应该共享任何东西。这是因为你会失去微服务的主要优势:你可以独立部署每个微服务

它们还应该松散耦合。它们应该对其他技术保持不可知状态。这意味着如果你在一个微服务中从PHP更改为Java,那么其他微服务不会受到影响。事实上,它们甚至不应该知道或关心。数据库也是如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接