多模块Maven与微服务架构

时间:2020-03-31 07:08:17

标签: java spring spring-boot maven microservices

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

我有疑问/问题,如果有人请帮助我,那将很棒。

  1. 何时使用Multimodule maven和何时使用微服务?
  2. 假设我们有可以由任何服务使用的实用程序文件,因此对于通用性它将是一个不同的spring boot应用程序,或者在每个spring项目中我们都必须保留该实用程序文件。
  3. 如果我们有3个微服务,我不想授予其中一种服务,我们如何实现该功能,就像多模块maven一样,我们可以从父pom.xml注释掉该项目,但是我们该怎么做在微服务中。
  4. 我们如何在除restTemplate之外的2个服务之间进行通信。

1 个答案:

答案 0 :(得分:2)

马丁·福勒(Martin Fowler)的一些建议:https://martinfowler.com/bliki/MonolithFirst.html 基本上,它说先构建一个整体,只有在您具有一些工作功能后,才决定是否以及如何将其拆分为多个微服务。

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

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

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

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

希望这会有所帮助。