OSGi谈论微服务,而媒体谈论微服务。但是,它们似乎并不相同。这些微服务之间有什么区别。
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不仅可以使您推迟支持微服务的决定,还可以在以后向系统中添加微服务。对于最基本的功能和最高级别的功能具有统一的体系结构样式,使系统更易于理解和扩展。
我认为您在这里不比较苹果。 OSGI
是application体系结构,而microservices
是distributed systems概念。
根据我的经验,微服务具有许多好处:
但是,它们也有一些缺点:
有一篇很好的文章描述了一些差异here。