【问题标题】:Distributed OSGi - what is the proper way to manage bundles across all containers?分布式 OSGi - 跨所有容器管理捆绑包的正确方法是什么?
【发布时间】:2012-01-29 19:53:52
【问题描述】:

我们正在考虑在我们的企业环境中使用分布式 OSGi。
我们将有以下设置:

  • 许多主机上的 10 到 100 个 OSGi 容器提供各种服务。
  • 其中许多服务由多个容器提供。
  • 其中一些服务可能需要在所有服务中保持一致 容器(部署相同的版本)。

在所有容器中管理包的生命周期(安装、启动、更新、停止、卸载)的正确方法是什么?

几个要求:

  • 因为可能有这么多的容器,都应该处理 一起;即当我要更新一个包时,一个命令 应该更新该捆绑包已经存在的所有容器。
  • 命令必须是可重复的:首先在测试系统上执行命令,然后在测试完成后在生产系统上重复完全相同的命令。

感谢您对上述问题的任何建议。

最好的问候, 马顿

【问题讨论】:

  • 所有这些 OSGi 容器是否构建一个大型分布式 OSGi 容器,其中主机 X 上的服务 A 可以使用主机 Y 上的服务 B,就像它在同一主机 X 上一样?还是它们彼此分开,而您只需要维护 10-100 个 OSGi 容器?它们是否都像 10-100 个 OSGi 容器一样具有完全相同的包,并且您想同时向所有这些 OSGi 容器发送命令(如“安装”)?还是主机 X 有一个带有 N 个包的 OSGi 容器和主机 Y 上的 OSGi 容器有一组不同的包是不同的?
  • 这是一个大型分布式 OSGi 环境:主机 X 上的服务 A 可以使用主机 Y 上的服务 B。每个容器可能有一组不同的捆绑包。谢谢!
  • 我会尝试使用 Apache Karaf 构建这样的系统(因为它提供了简单的方法来自动化命令和轻松管理包)。我将使用共享包存储对其进行设置,因此每当我更新包时,所有运行时都会选择它。 Karaf 旨在支持从脚本执行命令,因此编写将管理系统所需的脚本应该不难。但是,您不会获得分布式事务。在某个时间点,会出现版本不匹配,我认为目前没有解决方案。

标签: java osgi distributed provisioning dosgi


【解决方案1】:

您可能想看看为类似云的环境设计的更多“托管”解决方案:Apache ACE 或其大哥Amdatu

Apache ACE 将单个 OSGi 容器转变为可从单个管理点控制其状态的托管容器。 Amdatu 是一个更完整的框架,包括用于配置的 ACE,但增加了横向功能。

【讨论】:

  • 请注意,Apache ACE 刚刚作为顶级 Apache 项目毕业,因此链接(仍在孵化器空间中)可能长时间无效。
  • 链接将保持有效并简单地重定向到新位置。
【解决方案2】:

在管理大量捆绑包方面,请查看 Karaf 功能 - 它们极大地简化了对大量捆绑包的处理。

对于分布式方面,请查看 Karaf 子项目 Cellar,它使用 HazelCast 对 Karaf 进行集群(并通过功能机制安装在 Karaf 中)。

【讨论】:

    【解决方案3】:

    如果您认真对待企业就绪——意思是“稳健”——分布式 OSGi 运行时——那么看看 Paremus Service Fabric。我们从 2005 年就开始这样做了 :)

    Service Fabric 的配置/管理架构具有极强的可扩展性(>> 1,000 个容器)、响应迅速且稳定!多年的开发和商业运行时经验支持该产品。 Service Fabric 体系结构支持多个基于 OSGi 的并发分布式应用程序。 Service Fabric 的架构以 OBR 为中心;我们的首席工程师负责最近的 OSGi 联盟 OBR 规范活动。

    Service Fabric 消息底板利用 DDS 消息传递协议 - IMO 是分布式 OSGi 的天然合作伙伴。 Paremus RSA(远程服务实施)是该标准的洁净室实施 - 它高度稳健、重量轻,并允许协议和分发提供商的动态插入能力。默认发现提供程序 - 再次是 DDS。

    最后,Service Fabric 开箱即用。

    【解决方案4】:

    Gyrex 中,我们使用 p2 在集群的不同节点之间分发包。可以通过使用节点标签和 LDAP 过滤器表达式(在 OSGi 中很常见)来控制应将哪些包供应给哪个节点。例如,可以仅在 Web 节点上安装(和激活)Web 包。

    对分布式服务的支持是not available out-of-the box。 ECF 需要手动集成。

    【讨论】:

    • 截至 2016 年 4 月,工作似乎只在服务器 git.eclipse.org/c/gyrex
    • 所有代码已合并到一个 Git 存储库中,以便于维护。
    猜你喜欢
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2015-03-12
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    相关资源
    最近更新 更多