【问题标题】:How to project a micro-service architecture via Spring Boot framework如何通过 Spring Boot 框架投影一个微服务架构
【发布时间】:2015-07-12 08:52:07
【问题描述】:

大家好,

我试图弄清楚如何根据 Wildfly 中运行的模块(战争)移动我当前的系统架构。现在所有的基础资源都放在JNDI树中,比如Datasources、JMS等……我项目的框架是Spring 4及其家族,这让我可以查找这些资源和其他东西。

我的目标是使用 Spring-Boot 和 Spring Cloud Netflix 创建一个微服务架构,其中每个 WAR 都是由 Bus 服务集成的新的独立应用程序。

但我的疑问是,如何与所有单个 Spring Boot 应用程序共享这些 Jndi 数据源,请记住,必须为每个 application.properties 中的每个应用程序/数据源设置用户/密码并不好。

有没有办法让一个主 Spring Boot 管理所有子项目,因为最大的优势是让一个应用程序在一个端口上运行,另一个在另一个端口上运行,所以如果发生任何问题,例如 Wildfly 不会不要停止所有这些,因为现在在我当前的架构中发生了什么。

(Spring Boot)+(Spring Cloud)+(所有项目的单个 jndi 树)+(它们之间的独立模块)

让我知道你的想法!

谢谢...

【问题讨论】:

  • spring boot 背后的想法是基于微服务(在我看来)与云组件你有不同的方式来使用胖罐子集成你的服务

标签: spring spring-boot datasource jndi wildfly-8


【解决方案1】:

Spring Cloud 有一个名为 Spring Cloud Config 的模块,正是为了这个目的。配置服务器允许您集中定义您的配置,并且每个微服务自动获取此配置(并在必要时刷新它)。关于单个 JNDI 树,我认为这与微服务的架构有点矛盾。由于每个微服务都有自己的数据库,因此您只需为每个微服务配置一个数据源,因此在 application.properties 或配置服务器中配置它并没有太多开销。

【讨论】:

  • 说到微服务模型,你的意思是当我有一个数据库时,我应该将所有服务集中到一个 Spring Boot 应用程序中吗?在我看来,我可以拥有任何意味着功能的 Spring Boot 应用程序,因此它可以指向同一个数据库。在这种情况下,许多项目可以共享同一个数据源,不是吗?
  • 如果您有一个数据库要用于所有微服务,您必须问自己,每个服务是否真的提供单一功能,以及将您的应用程序分成微服务是否真的为您提供了以下优势:可扩展性和可用性。但这是一个困难的话题,在这样的平台上不容易讨论。
  • 假设我真的想让很多 Spring Boot 应用程序指向同一个数据库,我该如何解决呢?我是认真的,因为这些应用程序中的每一个都将具有不同的 http 端口,当我在 Wildfly 中部署时获得相同的 http 端口时会有所不同。将战争从 Wildfly 分散到 Spring Boot 应用程序,会给我一个不同的范式来管理和保持服务器安全,但另一方面,它使管理基础设施资源变得更加困难。这就是我的意思,如何保持管理方面的轻松。
  • 在这种情况下使用 Spring Cloud Config 服务器。在那里,您可以集中管理您的配置。它基于 Git 存储库,因此您的配置是版本化的,并且由于 Git 存储库的分布式特性,如果配置服务器不可用,它还有一个本地回退。
猜你喜欢
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 2019-02-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多