多模块maven VS 微服务架构

Rah*_*hul 2 java spring maven spring-boot microservices

必须为我的项目创建一个项目模板,所以我很困惑在多模块 Maven 或微服务(尤里卡)之间使用什么。

我有几个疑问/问题,如果有人能帮助我,那就太好了。

  1. 何时使用多模块 Maven,何时使用微服务?
  2. 假设我们有可供任何服务使用的实用程序文件,因此它将是一个不同的 spring boot 应用程序,或者在每个 spring 项目中我们必须保留实用程序文件。
  3. 如果我们有 3 个微服务,我不想授予对其中一项服务的访问权限,那么我们如何实现这一点,就像对于多模块 Maven 一样,我们可以从父 pom.xml 中注释掉该项目,但是我们如何在微服务中做到这一点。
  4. 我们如何在除了restTemplate 之外的两个服务之间进行通信。

Gee*_*nte 5

Martin Fowler 的一些建议:https://martinfowler.com/bliki/MonolithFirst.html 基本上它说首先构建一个整体,只有当您拥有一些工作功能时,才决定是否以及如何将其拆分为多个微服务。

恕我直言,微服务的最大优势是独立的可部署性:您可以开发、质量保证和部署一个微服务,而无需担心其他微服务。但只有当您与多个团队合作时,这种优势才会显现出来。

您提到的有关微服务的一些问题:

  • 通常,微服务之间有两种访问模式:发送命令和监听事件。您无法使用 REST API 来同时完成这两项工作,迟早您还需要一些消息传递基础设施。或者使用 GraphQL。
  • 微服务之间的访问需要受到保护。对于 REST API 和消息传递,您通常会为允许使用它的每个微服务创建一个 API 密钥。
  • 切勿在微服务之间共享实用程序或文件,否则将破坏独立的可部署性。如果确实需要共享资源,请创建一个专用的微服务,通过 REST API 公开共享资源或实用功能。

但首先:创建一个整体并发现是否以及在哪里需要微服务边界。

希望这可以帮助。