【问题标题】:What is correct path for creation of micro services in Java? Spring Boot or OSGI在 Java 中创建微服务的正确路径是什么? Spring Boot 或 OSGI
【发布时间】:2015-05-02 15:40:55
【问题描述】:

我找到了一本书“Spring DM in action”。当我开始查看 Spring for OSGI 的最新版本时,我发现 Spring 已经停止了这个项目。

由于我有一些使用 Spring 开发的经验,我想了解我应该继续阅读有关 Spring 和 OSGI 的内容还是切换到 Spring Boot 作为创建模块化应用程序的方式?

【问题讨论】:

  • Spring DM 现在被称为 Eclipse Virgo。但是,您应该阅读以下博客文章:blog.osgi.org/2014/09/…,如果您想使用 OSGi,请不要使用类似 Spring 的技术。
  • 感谢您的回答。我是否正确理解,如果我是 Spring 的粉丝,我应该忘记 OSGI 作为创建模块化系统的一种方式,而只是简单地使用 Spring Boot 来实现这一点?
  • 我也是 Spring 的粉丝。它只是不适用于 OSGi。我认为你不应该忘记 OSGi。您不应该同时使用这两种技术。在 OSGi 中,使用不同的组件模型(如声明式服务),该模型旨在在模块化环境中正常工作。以我的经验,一开始切换有点痛苦,但我永远不会回到基于 Spring 的单一世界。
  • @BalazsZsoldos 我认为如果你不需要 spring dm 但仍然有它的用例,那么它不值得工作。

标签: spring osgi spring-boot spring-dm


【解决方案1】:

我想写一个评论,但它没有给我足够的字符。

如果你需要 OSGi 的模块化和动态化,spring DM(现在的 Gemini Blueprint)是一个不错的技术。我们用它来创建一个带有插件基础设施的高性能的面向消息的中间件。需要插件基础设施,因为客户希望能够在运行时通过 Web 界面添加/替换/更新模块和更改路由。每条消息还通过 0-N groovy-scripts 进行转换(存储在 db 中,在运行时可更改)。处理引擎基于弹簧批处理和弹簧集成。

因此,如果您有 OSGi 的真实用例,它可能是一项不错的技术。

但大多数时候人们试图使用它来分离单一 Web 应用程序的各个层,这没有用,而且工作量大于利润。有一次我看到一个开发人员使用 OSGi 将他的领域模型的每一组分成一个小模块的方法。这对您的应用程序设计造成的损害超过了您可以从中获利的程度,因为利润为零。

此外,这本书可能是一个不错的主意,可以为您提供有关“如何开发”软件的不同方法。

【讨论】:

    【解决方案2】:

    到标题问题:肯定是“OSGi”。 OSGi 服务是微服务名称的非常​​(最?)自然的候选者。

    您的帖子内容:

    我必须跳到这里,说“两者都”。 OSGi,恕我直言,是 Java 发生的最好的事情,因为......好吧,也许永远。为什么?它恳求您通过促进更小、更模块化的代码片段的生产来遵循更好的设计实践。

    我也喜欢 spring-boot,但我发现它更适合(读作“很棒”)编写客户端应用程序。

    请谈谈您对 Spring 的体验——不要害怕。如果您习惯于 Spring XML 配置,您会发现蓝图语法在大多数情况下是相同的……您仍然可以在 OSGi 杠杆系统中广泛使用各种 Spring 组件。

    仅供参考 - 我是从开发了几个植根于 OSGi 的大型系统的角度来看的(并且还尝试了一些典型的 WAR/servlet 部署)

    【讨论】:

      【解决方案3】:

      问题在于,这是制作模块化应用程序的两个完全不同的概念。

      OSGI 是一个比 boot 或 spring 低得多的庞大系统。它为您提供了一组不同的工具来模块化应用程序,并在开发过程中提出了非常不同的挑战。

      阅读究竟什么是 OSGI、什么是 Boot 以及它们解决了哪些问题。如果阅读后您不知道该选择哪个工具,请选择 Boot。

      【讨论】:

      • “boot”是指弹簧靴吗? Spring Boot 的模块方法与“普通” Spring 应用程序的模块化相比有何不同?
      • 是的,我的意思是 Spring Boot。真的没有区别。问题是关于 Boot,所以我假设有人正在尝试新技术或试图通过拥有大量 REST 端点来实现模块化。不管是哪种情况,至少要花几天时间才能了解要求和约束。
      猜你喜欢
      • 2019-12-04
      • 1970-01-01
      • 2023-04-09
      • 2020-10-02
      • 1970-01-01
      • 2016-02-14
      • 2010-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多