代码之家  ›  专栏  ›  技术社区  ›  Roman Newaza

Symfony 4和Microservices

  •  1
  • Roman Newaza  · 技术社区  · 6 年前

    假设我要创建几个微服务:Alpha、Beta、Gamma。 在使用像2这样较旧的Symfony版本的应用程序结构方面,我会为每个服务创建一个bundle,但是在Symfony 4中不再推荐bundle。所以。。。我应该为每个服务创建单独的存储库还是仍然在一个应用程序中创建捆绑包?

    2 回复  |  直到 6 年前
        1
  •  7
  •   dbrumann    6 年前

    如果在不同的应用程序中有不同的微服务,则不需要捆绑包。您可以将它们保存在不同的存储库中,但通常的做法是使用所谓的mono存储库。顾名思义,使用mono存储库可以将所有项目保存在一个存储库中。这样做的好处是,跨越所有项目的更改可以更容易地同步完成。缺点是在管理时需要更多的努力,并且在构建和部署时可能会导致额外的开销,因为很难看到哪个服务已经更改,所以必须重建所有服务。这里有一些关于mono存储库的书籍和演示,您可能需要查看一下。简而言之,Symfony并不限制您管理服务的方式。您可以为所有项目或多个存储库设置一个存储库。

    my_app
    - src
      - Controller
        - Alpha
          - IndexController
        - Beta
          - IndexController
    

    对于默认配置,这应该是现成的,即使您偏离了默认配置,您也可以通过将配置指向正确的文件夹来使参数解析程序等工作。显然,如果您想将代码提取到服务自己的应用程序中,这将要求您确保服务之间不共享代码。有一些静态代码分析工具可以帮助您保持架构的整洁,即确保Alpha不使用Gamma中的代码,反之亦然。

    如果要通过执行以下操作更清楚地分离应用程序:

    my_app
    - src
      - AlphaApp
        - ...
      - BetaApp
        - ...
    

        2
  •  0
  •   Jasmin Mistry    6 年前

    您仍然可以在symfony4中创建bundle,尽管最佳实践并不推荐使用它。看见 https://symfony.com/doc/current/best_practices/creating-the-project.html