java - 集群/分布式服务有哪些好的中间件解决方案

标签 java distributed-computing middleware

我正在寻找现有的中间件解决方案,以解决服务集群/分布方面的问题,以实现负载平衡和可用性。我正在考虑基于消息传递系统(更具体地说,JMS)为此构建自己的基础设施。但是,如果可能的话,我宁愿使用已经存在的东西。

系统应该能够在多台计算机上运行各种服务。根据服务描述,系统应该能够计算出在集群中启动特定服务的多少个实例。根据待处理的服务请求,它应该动态调整正在运行的服务数量。监控服务和部署新版本的服务也应该由系统来处理。

我所说的服务是指具有预定义接口(interface)的“独立功能单元”。客户端只知道接口(interface),中间件应该负责确保服务在足够的节点上运行,以便响应通过接口(interface)发出的传入请求。

它应该是与 Java 集成良好的东西。我的一些服务是作为 native 代码实现的,但我有一个很好的解决方案,可以将它们包装到基于 Java 的服务中。

我研究过一些中间件/ESB 解决方案,例如 ICEMule但我没有发现它们可以解决我上面很好地描述的动态加载服务配置的方面(如果有的话)。所以我想知道还有什么可能是这里的人想要推荐看一下的......

最佳答案

我建议您更深入地研究 OSGi:

  • 它有一个相当动态的模块系统,允许您在网络上漫游您的服务
  • 您可以构建现有的开源产品:Eclipse EquinoxVirgo , Apache FelixKaraf , Knopflerfish , Concierge , Glassfish 3等(comparison)
  • 对于远程方面,OSGi 4.2 有远程服务规范,该规范有多种实现。更值得注意的是,ECF如果您想使用 JMS ( article on dzone ),这似乎是一种可以满足您需求的实现。

最后一点,您可以查看 Paremus Service Fabric - 从描述来看,它听起来与您尝试构建的野兽非常相似(除了它使用 JINI 而不是 JMS)。如果不出意外的话,它可能会成为灵感的源泉。

他们曾经有一个名为 Newton 的开源版本,但由于缺乏兴趣而被关闭。这是mentioned它以 Service Fabric Community Edition 的名义存在,但目前我在他们的网站上找不到任何对它的引用(很可能只是 cancelled )。

最后,这是另一个激发灵感的项目:Bundle-Bee - transparent, grid-distributed OSGi computing 。很可能还有更多类似的项目。

关于java - 集群/分布式服务有哪些好的中间件解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3933763/

相关文章:

java - 调用seam组件中的私有(private)方法

java - 如何部署混合 C++/Java (JNI) 应用程序?

configuration - Zookeeper 如何管理其他集群中的节点角色?

java - 分布式自然任务和Akka

java - Spring Data Elasticsearch 不会隐式地从注解创建映射

java - 不打印到文件java

php - Lumen中间件排序(优先)

javascript - "next(' 路线 ')"不 't work with ".use()"

algorithm - 集合交集的并行算法

javascript - ExpressJS 中间件被调用两次