OSGI和微服务之间的区别

时间:2018-03-23 05:54:50

标签: osgi microservices osgi-bundle

你想什么时候选择OSGI模块而不是微服务?我可以用微服务做些什么来使用OSGI模块吗?

2 个答案:

答案 0 :(得分:18)

OSGi和微服务共享相同的架构风格,但其粒度不同。我们实际上习惯于调用OSGi服务微服务,直到网络窃取了该名称。我们现在有时称他们为 nanoservices

(微纳米)服务的原理是通过 gate 和明确定义的 API 来隧道模块之间的通信。由于API是或者至少应该独立于实现,因此您可以更改一个模块而不影响其他模块。其中一个最重要的好处是,在查看服务图时,甚至大型系统的设计仍然可以理解。在某种程度上,基于服务的设计捕获了系统的本质,留下了模块的细节。

对于Web /微服务, gate 是通信端点(例如主机:端口)和协议(例如REST)。 API是非正式定义的,或者使用Swagger / OpenAPI或SOAP等定义。

OSGi将(纳米)服务定义为可供其他模块(捆绑)使用的对象。 Java用于定义API。

由于nanoservices是OSGi最重要的设计基元,因此有很多支持使它们易于使用。有趣的是,由于服务注册表是动态的和反射性的,因此将纳米服务映射到微服务是非常简单的,反之亦然。 OSGi联盟在其模型中对分布式OSGi ,即“远程服务管理员”进行了标准化。该规范允许您使用OSGi nanoservice并将其映射到REST,SOAP或其他协议。

因此,选择OSGi不仅可以让您决定支持微服务,还可以让您随后向系统添加微服务。为最基本的功能和最高级别的功能提供统一的架构风格,使系统更易于理解和扩展。

答案 1 :(得分:6)

我不认为你在这里比较苹果和苹果。 OSGI应用程序架构,而microservices分布式系统概念。

根据我的经验,微服务提供了许多好处:

  1. 个人微服务易于部署,测试和维护。
  2. 微服务与语言无关。这意味着你可以在python中编写一个微服务,在javascript中编写另一个微服务,在go中编写另一个微服务,在java中编写另一个微服务。
  3. 微服务易于单独扩展。这意味着如果一种类型的请求比其他类型的请求更频繁,您可以扩展所需的微服务,而无需扩展系统中的任何其他内容。
  4. 系统中的每个微服务都拥有自己的数据。这确保了明确的界限和关注点的分离。
  5. 然而,它们也有一些缺点:

    1. 部署时存在更多基础架构问题。
    2. 很难在微服务之间保持消息传递的清洁和高效。
    3. 在具有许多活动部件的系统上进行端到端测试更加困难。
    4. 消息传递的开销更大。它不需要调用其他服务作为直接方法调用,而是需要使用HTTP或其他形式的网络通信。
    5. 有一篇很好的文章描述了一些差异here