OSGI和微服务之间的区别

sdi*_*ver 15 osgi osgi-bundle microservices

当你想选择比微服务OSGI模块有什么我可以用微服务做,我不能与OSGI的模块呢?

Pet*_*ens 21

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

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

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

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

由于nanoservices是OSGi的最重要的原始设计有很多的支持,使他们易于使用.有趣的是,由于服务注册是动态的和反射的,这是相当简单的nanoservice映射到微服务,反之亦然.OSGi联盟在其分布式OSGi模型"远程服务管理员"中对此进行了标准化.此规范允许您使用OSGi nanoservice并将其映射到REST,SOAP或其他协议.

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


Sup*_*ron 9

我不认为您在这里比较苹果。OSGI是一个应用程序体系结构,microservices而是一个分布式系统概念。

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

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

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

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

有一个很好的文章描述的一些差别在这里

  • 我要说的是,从您的利益列表中,只有2(语言不可知论)实际上是OSGi微服务与流程微服务的限制。OSGi微服务可独立部署,独立扩展,可以拥有其数据。目前,它们仅限于JVM和在JVM上运行的语言:Java,Scala,Groovy,Closure,JRuby等。 (8认同)