你想什么时候选择OSGI模块而不是微服务?我可以用微服务做些什么来使用OSGI模块吗?
答案 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
是分布式系统概念。
根据我的经验,微服务提供了许多好处:
然而,它们也有一些缺点:
有一篇很好的文章描述了一些差异here。