首页 > 解决方案 > 多模块 maven Vs 微服务架构

问题描述

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

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

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

标签: javaspringspring-bootmavenmicroservices

解决方案


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

恕我直言,微服务的最大优势是可独立部署:您可以开发、QA 和部署一个微服务,而无需担心其他微服务。但这种优势只有在您与多个团队合作时才会发挥作用。

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

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

但首先:创建一个单体应用程序并发现您是否需要微服务边界以及在何处需要微服务边界。

希望这可以帮助。


推荐阅读