问题标签 [jgroups]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
480 浏览

java - 具有部分状态转移的 JGroups ReplicatedHashMap

我希望通过附加功能扩展 JGroups ReplicatedHashMap 演示- 支持在同一集群内的不同实例之间复制命名子图的能力。

基本思想是,并非所有客户端都需要拥有整个 hashmap 的本地副本,但可能需要根据需要请求额外的 hashmap 块。每个客户端都会从一个相对较小的基本数据集开始,例如,与状态 ID“base_data”相关联的状态。由于他们需要更专业的数据,他们将执行部分状态传输,请求他们需要的确切数据;与状态 ID“specialized_data_1”关联的状态。这创建了一种本地化缓存服务,其中对缓存的更新会传播到集群内的适当客户端。

这是对 JGroups 的部分状态转移的适当使用吗?有一个更好的方法吗?我完全误解了部分状态转移吗?既然 JGroups 3.x 不支持部分状态传输,那怎么能在那里实现呢?除了文档中的这个小部分(滚​​动/搜索“3.6.15. Partial state transfer”)之外,我还没有找到太多关于部分状态转移的文档,所以我很感激您推荐的任何其他好的参考资料。

谢谢

0 投票
1 回答
211 浏览

java - JGroups 函数列出可用的组或集群

我有一系列使用 JGroups 库相互通信的客户端,它们基本上创建了一个附加到集群名称的通信通道:

现在我希望他们首先列出要连接的可用集群,并让用户决定连接到哪个集群,而无需在上面的代码中硬连线集群的名称。显然 API 有 getName() 如果设置返回通道的逻辑名称,但没有检索设置集群的方法。

我虽然使用 org.jgroups.Message.getHeaders() 并读取标题会产生活动集群,但什么也没有。请问有什么帮助吗?

0 投票
1 回答
168 浏览

java - 保持一个长时间运行的任务在集群的一台机器上运行并进行故障转移?

我有一个低 CPU 队列处理任务,我需要保持运行很长一段时间。如果任务失败,我希望任务在高可用性集群环境中运行,如果第一台机器出现故障,任务应该“切换”到另一台机器。确保我一次在集群中的一台机器上运行任务的最佳方法是什么,并且在机器故障时实现无缝故障转移?

现在,我打算使用JGroups来实现这个功能。我会为每个任务保留一个频道,只有频道负责人会执行任务,其他成员“跟随”。然后,如果频道领导者发生变化,新的频道领导者会从上一个离开的地方继续。

有没有人使用 JGroups 来解决这个问题?你的经历是什么?

0 投票
1 回答
1908 浏览

tomcat - 在 tomcat 上使用 infinispan 的分布式缓存无法启动

我正在尝试使用 infinispan 作为我的应用程序上的分布式缓存。

我将它用作使用 spring 和 JPA 进行休眠的二级缓存。

使用此 infinispan-config.xml 将 Infinispan 配置为在分布式集群模式下工作

当使用与 Infinispan 提供的 demoApp 相同的配置文件时,它可以完美运行,但是在应用程序内部和 Tomcat(7) 上运行时,我得到了流动错误(请注意,集群已启动并且 infinispan 找到其他节点):

我已经烧了不止一个树天试图解决这个问题,但一无所获,我会感谢你的帮助

编辑:删除时<clustering mode="replication">一切正常。

0 投票
1 回答
738 浏览

java - Jgroups 多播文件传输

我尝试使用 jgroups 进行多播文件传输。当我在每条消息之间休眠时,它就起作用了。当我删除此睡眠时,我收到的文件大小相同,但无法打开(可能不尊重订单)。

我用 FileInputStream 读取了我的文件,并以良好的顺序(只有一个发件人)将它分成几条消息发送。我使用 NAKACK 来假设可靠且有序的消息。

为了进行测试,我使用 100MB 的图像进行传输。

我怎么知道出了什么问题以及如何解决?

非常感谢!

0 投票
1 回答
352 浏览

cluster-computing - 在错误的故障检测之后,可疑节点中的 Lock.tryLock() 永远挂起

我们使用 jgroups-3.0.3.Final 作为两个节点集群中的集群范围锁定实现。我们的 JGroups 设置(简化)如下:

我们执行锁定/解锁如下:

我们预计一天会有几次错误的故障检测,可能是因为 FD 的超时值太低。更糟糕的是,如果在这种虚假的 FD 期间获得了几把锁,我们通常会永远挂起。

场景是这样的:

  1. 我们有一个 {A,B|1} 的集群视图
  2. 等到检测到故障,但两个节点都处于活动状态(假 FD)。
  3. 节点 A 将怀疑节点 B 并创建新视图 {A|2}
  4. 可疑节点 B 仍会在视图 {A,B|1} 中。
  5. 节点 B 正在尝试获取锁“mylock”。
  6. 节点 A 丢弃来自节点 B 的授权锁定消息,因为它在不同的视图中。
  7. 执行视图合并,并创建新视图 - {A,B|3}

问题:尝试获取“mylock”的线程挂起lock.tryLock();,随后每次尝试获取“mylock”也失败。

我们已经使用tryLock(long time, TimeUnit unit)了指定的超时,并且似乎解决了这个问题。

问题:这是否意味着JGroups impl。没有超时的 Lock.tryLock() 有一个错误,应该避免吗?

谢谢。

0 投票
1 回答
881 浏览

jboss7.x - JBoss 7下的Hibernate Search JGroups配置

我是编写使用 Hibernate Search 的 Web 应用程序的团队的一员,我们最近尝试开始使用 JGroups 来保持不同节点上的 Lucene 索引彼此同步。

但是,我一直无法完成设置此设置的最基本的第一步,并且文档似乎很稀疏

这里的关键属性是hibernate.search.worker.backend.jgroups.configurationFile我们最终需要的 jgroups 配置文件的名称。我尝试将此文件放在 WEB-INF 和 JBoss 模块目录结构中的 props 文件中(其他文件位于并成功加载),但它只是没有被拾取。

在日志中我可以看到:

我已经截断了属性列表,Unable to use any JGroups configuration mechanisms provided in properties因为它会占用几页,但是如果您查看该行,您会看到它列出了属性,同时它说它找不到它。

因此,它没有获取配置文件位置,而是使用默认值。

这里有没有人在 Hibernate Search 中使用过 jgroups?您是否设法提供了自定义 jgroups 配置文件?你是怎么做到的?

0 投票
1 回答
2224 浏览

spring - EC2 上的 Infinispan 和 JGroups 发现

我正在尝试在某些带有 Tomcat 服务器的 Linux 机器上使用 AWS EC2 上的应用程序。以前,我在 LAN 上将我的应用程序与 Infinispan 一起使用,并使用 UDP 多播进行 JGroups 成员发现。EC2 不支持 UDP 多播,这是 Infinispan 用于检测集群中运行的节点的默认节点发现方法。我研究过使用 S3_PING 协议,但我还没有弄清楚为什么它不起作用。

有谁知道这里可能存在什么问题?

这是我的配置文件: 1. applicationContext-cache.xml

2.infinispan-replication.xml

3.jgroups.xml

0 投票
1 回答
1393 浏览

java - JGroups 不能在不同的机器上工作

我通过 jgroups 建立了一个集群的连接器。我的连接器实例在同一台机器上运行时确实可以正常工作并收到其他消息,但是当它们在两台不同的机器上运行时它们不会捕获其他消息。我的 JGroups 连接器类:

0 投票
1 回答
2077 浏览

logging - 为给定的协议实例设置 JGroups 的协议日志级别

我有一个 JGroups 设置,其中包含多个 JGroups 协议栈(例如,一个用于应用程序服务器,这里是 JBoss EAP5,一个用于自定义应用程序)。

我希望将 JGroups 的协议日志级别设置为给定级别,但仅针对给定协议实例,不适用于全局记录器。即我想设置日志级别,但仅适用于协议栈,而不是其他协议栈。这用于调试我的自定义应用程序 JGroups 协议栈。

我开始在日志配置(log4j)中为给定协议全局设置日志级别,但这对所有协议栈都是有效的。因此,产生了大量的日志消息。

然后我尝试了一种更好的方法:所有 JGroups 协议的超类Protocol都有一个方法setLevel可以用来设置日志记录级别(可以通过编程方式或通过 XML 配置文件进行配置)。由于Protocol.setLevel(String)只能从 JGroups 2.8.0 获得,我隔离了 EAR 类加载器以便从 JBoss EAP5 服务器覆盖 JGroups 2.6.20。但效果与全局配置相同:为所有协议栈设置日志级别。

有没有办法为给定 ProtocolStack 的给定协议配置 JGroups 日志记录级别?如果是,该怎么做?