在 Java 中创建微服务的正确路径是什么? Spring 引导或 OSGI

What is correct path for creation of micro services in Java? Spring Boot or OSGI

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

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

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

OSGI 是一个巨大的系统,其位置比引导或 spring 低得多。它为您提供了一组不同的工具来模块化应用程序,并在开发时提出了截然不同的挑战。

了解什么是 OSGI,什么是 Boot 以及它们解决的问题。如果看完后您不知道该选择哪个工具,请选择 Boot。

我想写评论,但字数不够。

如果您需要 OSGi 的模块化和动态化,spring DM(现在的 Gemini Blueprint)是一项很好的技术。我们用它来创建一个带有插件基础结构的高性能消息导向中间件。需要插件基础结构,因为客户希望能够 add/replace/update 模块并在运行时通过 Web 界面更改路由。每条消息还通过 0-N groovy 脚本(存储在数据库中,可在运行时更改)进行转换。处理引擎基于 spring 批处理和 spring 集成。

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

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

此外,这本书可能是个好主意,可以让您了解 "how to develop" 软件的不同方法。

到标题问题:"OSGi"肯定的。 OSGi 服务是微服务绰号的非常(最?)自然候选者。

你的post的内容:

我不得不跳到这里,说 "both." OSGi,恕我直言,是发生在 Java 上的最好的事情,因为...好吧,也许永远。为什么?它要求您通过促进更小、更模块化的代码片段的生成来遵循更好的设计实践。

我也喜欢 spring-boot,但我发现它更适合(阅读,"awesome for")编写 client-side 应用程序。

关于您使用 Spring 的体验——不要害怕。如果您习惯了 spring XML 配置,您会发现蓝图语法在大多数情况下是相同的...您仍然可以广泛使用各种 spring OSGi-leveraging 系统内的碎片。

仅供参考 - 我是从开发了几个植根于 OSGi 的 large-scale 系统(以及对典型 WAR/servlet 部署的野外尝试)