【问题标题】:Java Open Source Framework for Service Management用于服务管理的 Java 开源框架
【发布时间】:2014-07-08 06:27:50
【问题描述】:

在基于 Java 的大型分布式系统上工作,因此会有多个服务跨多台机器运行.....

寻找能够管理这些服务的开源框架(例如,启动/停止服务、远程安装新服务等)

Apache Karaf 似乎是一个不错的选择,但在它下面使用了 apache felix(一个 OSGi 参考实现)捆绑包,我很难真正理解它。特别是在 felix 中定义和注册一个服务似乎很容易,但是如何远程调用这样的服务呢?您是否需要有一个单独的 RPC 机制来实现这一点?似乎很少有链接描述它。一般来说,人们如何使用 OSGi? Apache felix 过时了吗?

假设我将拥有自己的 RPC 层(比如基于 RMI 或基于 Netty),是否有任何其他可用于管理服务的框架?

【问题讨论】:

    标签: java osgi apache-karaf


    【解决方案1】:

    我想您必须指定定义服务的方式。 有一些服务,例如使用 RPC 机制的远程服务,例如 EJB 远程调用。 定义服务的另一种方法是使用 SOAP(XML) 或 JAXRS(JSON) 作为传输协议来谈论 Web 服务。 OSGi中有服务的定义,这只是意味着API(服务定义)和实现的分离。总而言之,您可以将 OSGi 定义为同一 VirtualMachine 中应用程序的 SOA。 (它提供了更多,但这是从服务角度看待它的一种方式)

    Apache Karaf 是一个类似于应用程序服务器的 OSGi 服务器,只是它适用于 OSGi 应用程序。它在可选择的 OSGi 框架之上带来了许多便利技术。那将是 Apache Felix 或 Eclipse Equinox。两者都是提供基本 OSGi 基础架构的 OSGi 框架 - 同一 JVM 中的 SOA。
    现在它还有很多其他的好处,比如启动和停止服务,更新服务。

    考虑到 RPC,这很容易实现,例如,通过将 OSGi-Services 与 CXF 结合起来。它可以轻松配置为将 OSGi 服务导出为 CXF 服务。 (这是非常特定于 Karaf/CXF 的)

    Apache Karaf 本身也支持使用 Apache Karaf Cellar 进行集群,它还提供 DOSGi 服务,以便更轻松地跨集群组进行服务通信。 DOSGi 代表分布式 OSGi,也可以通过使用 CXF 和许多其他实现来实现。

    总的来说,Apache Felix 和 OSGi 远未过时。许多 Java EE 应用程序服务器使用 OSGi 作为其底层技术,以实现模块化并且占用空间更小。
    那将是 GlassFish、Websphere、Geronimo 等......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多