OSGi服务与REST微服务之间的差异[关闭]

问题描述 投票:15回答:2

OSGi谈论微服务,而媒体谈论微服务。但是,它们似乎并不相同。这些微服务之间有什么区别。

osgi microservices osgi-bundle
2个回答
23
投票

OSGi和微服务共享相同的体系结构样式,但是它们的粒度不同。实际上,我们曾经称呼OSGi服务微服务,直到Web窃取了该名称。我们现在有时将它们称为nanoservices

(微| nano)服务的原理是通过定义良好的API通过gate在模块之间进行通信。由于API或至少应该独立于实现,因此您可以更改一个模块而不会影响其他模块。最重要的好处之一是,即使在查看服务图时,即使是大型系统的设计也可以理解。在某种程度上,基于服务的设计抓住了系统的本质,而为模块留下了细节。

对于Web /微服务,gate是通信端点(例如host:port)和协议(例如REST)。该API是非正式定义的,或使用Swagger / OpenAPI或SOAP之类的东西定义的。

OSGi将(nano)服务定义为一个对象,该对象可供其他模块(捆绑)使用。 Java用于定义API。

由于纳米服务是OSGi最重要的设计原语,因此有很多支持使其易于使用。有趣的是,由于服务注册表是动态的和反射的,因此将纳米服务映射到微服务非常简单,反之亦然。 OSGi联盟在Distributed OSGi(“远程服务管理员”)的模型中对此进行了标准化。该规范使您可以采用OSGi纳米服务并将其映射到REST,SOAP或其他协议。

因此,选择OSGi不仅可以使您推迟支持微服务的决定,还可以在以后向系统中添加微服务。对于最基本的功能和最高级别的功能具有统一的体系结构样式,使系统更易于理解和扩展。


10
投票

我认为您在这里不比较苹果。 OSGIapplication体系结构,而microservicesdistributed systems概念。

根据我的经验,微服务具有许多好处:

  1. 单个微服务易于部署,测试和维护。
  2. 微服务与语言无关。这意味着您可以在python中编写一个微服务,在javascript中编写另一个,在go中编写第三个,在Java中编写另一个。
  3. 微服务易于扩展个体。这意味着,如果一种请求的发出频率高于其他类型,则可以扩展所需的微服务,而无需扩展系统中的其他任何事物。
  4. 系统中的每个微服务都拥有自己的数据。这样可以确保明确的界限和关注点分离。

但是,它们也有一些缺点:

  1. 部署时还有更多基础架构问题。
  2. 很难保持微服务之间的消息传递的干净和高效。
  3. 在具有许多活动部件的系统上进行端到端测试比较困难。
  4. 消息传递的开销更大。它需要使用HTTP或某种其他形式的网络通信,而不是将其他服务称为直接方法调用。

有一篇很好的文章描述了一些差异here

© www.soinside.com 2019 - 2024. All rights reserved.