【发布时间】: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