问题标签 [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.
java - 建立新的服务领导并通知领导
我有一个分布式系统设计问题。问题简介是
我们有很多客户来服务。该服务需要具有容错性,因此它将具有许多副本。当客户端无法再访问该服务时,它将切换到副本并通知所有其他客户端将切换到同一个副本。(在副本之间进行负载平衡是不可接受的,因为副本的数据值不完全相同,但所有客户端必须始终返回相同的数据值。)
我目前的设计是让客户在未能联系到服务时要求新的服务领导。当建立一个新的服务领导者时,它将通知所有客户端使用它。
与许多分布式协调设计一样,我需要一个分布式组管理器。我正在考虑在解决方案中使用 JGroups 和/或 Apache Zookeeper。
是否有一个或多个我应该寻找的现有食谱来解决这个问题?
infinispan - Infinispan 集群和 hotrod 客户端无法通信
我有一个带有几个节点的复制集群——它们可以在彼此之间自由通信。我还有一个 Hotrod 服务器加入集群(我可以看到它被其他节点识别)。但是,当我将 Hotrod 客户端连接到服务器并尝试将某些内容放入缓存时,出现以下异常:
hotrod 客户端:
org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for message id[4] returned server error (status=0x85): org.infinispan.CacheException: Problems invoking command.
热棒服务器:
Caused by: org.infinispan.CacheException: Type of data read is unknown. Id=-2147482548 is not amongst known reader indexes.
具有缓存存储的节点:
WARN: Problems unmarshalling remote command from byte buffer org.infinispan.CacheException: Type of data read is unknown. Id=-2147482548 is not amongst known reader indexes.
此外,Hotrod 客户端也看不到其他节点提供的任何更改。如果除了 hotrod 服务器之外集群中没有任何节点 - 一切正常。如果有任何其他节点(例如注册了 CacheListener)可用,我会得到上述异常。
我到处使用 Infinispan 5.1.5.Final 和 JGroups 3.0.10.Final。Win7 64 位,Java 6_0_32 32 位。所有节点都在一台机器上工作,集群建立在 TCP 传输堆栈上。每个节点都是一个 Java SE 应用程序。infinispan 论坛 (https://community.jboss.org/thread/199539) 上有一个类似的帖子,但它是针对旧版本的(在这种情况下,更新有所帮助)。
有人有类似的问题,或者知道我应该在哪里寻找问题的根源?
java - jgroup 是否使用校验和在 UDP 上变得可靠?
我试图了解 jgroup 如何实现可靠的多播。我已阅读手册并了解到他们使用的是否定确认。但是当集群成员收到损坏的消息时会发生什么?我在官方手册中找不到任何相关内容。(http://www.jgroups.org/manual/html_single/index.html#d0e5392)
有人知道他们是否对 UDP-Header 和数据使用校验和吗?在这种情况下,接收方会要求重传吗?
jgroups - JGroups中TCP的编程配置
如何设置字段
Java代码中的TCP协议?通用方法 setValue(...) 不接受这些字符串作为有效的属性名称,而提供的 tcp.xml 确实包含这些。JGroups API 也没有针对这些的直接设置器。
谢谢!卡塔林
jboss - EhCache 复制期间的 OOM
我们在 EhCache 复制使用过程中遇到了 OOM 问题。内存转储向我们展示了顶部的 jgroup 相关对象:
我们还在日志中看到以下警告:
环境:
我们使用的 Lib 版本:
EhCache(ehcache.xml)的配置:
我们检查了 host_x 上的 7800 端口可从 host_y 获得,反之亦然(通过 telnet)。
如果这里出现 OOM 问题,您能帮我们检测 root 吗?我们对不正确的复制配置有一些假设 - 但目前无法在这里定义错误在哪里。
感谢您的任何意见或建议!
jms - 低延迟消息队列
基本上我有一个在工作节点之间分配任务的主节点。工作人员的数量可能会改变,这意味着工作人员不能在服务器端进行硬编码。Master 向队列提交一个任务,其中一个工作人员接受这个任务,处理它并返回结果。最关键的方面是低延迟。工作节点上的典型处理时间约为 100-300 毫秒,这意味着消息系统不应该对处理时间增加明显的延迟。
目前我正在研究请求-响应 JMS 模式。这意味着 master 会将任务提交到共享队列,worker 将从队列中取出任务并将结果提交到另一个由 master 节点侦听的队列。Master 会将响应与请求相关联。
恐怕JMS可能会给系统带来延迟,这是不能接受的。也许我应该看看其他解决方案?比如 RabbitMQ、JGroups 还是 ZooKeeper?
如果 JMS 适合这里,你能推荐最快的 JMS 代理吗?目前我正在看 ActiveMQ
该解决方案的另一个要求是它应该能够在云中工作
cluster-computing - 如何在 Jgroups 中使用 FD_PING 和 tcp
我正在尝试将 FD_PING 与 jgroups 一起使用,但它失败了。我在 jg-protocol-id.xml 的协议列表中添加了 FD_PING,之后它开始识别 FD_PING,但是当它在 FD_PING 中调用命令时,它发送节点的名称而不是要验证的 ip/主机名。以下是配置。另外请让我知道我是否可以通过某种方式稳定故障检测。目前我们收到很多误报(因为我正在尝试使用 FD_PING)。
java - EC2 JGroups 发现
对于我当前的项目,我们决定将我们的应用程序部署到一些 Linux 机器上的亚马逊弹性计算云。我们使用 JGroups 进行组通信,并且需要一种可靠的发现机制,该机制不需要使用其他集群成员的地址预先配置每个应用程序(这对于 TCPPING 是必需的,而对于 TCPGOSSIP 则“排序”是必需的)。由于我们不能使用 UDP 多播,因此我们的选项中排除了多播发现。
我们研究过使用 S3 Ping 协议,但在得知它存在一些可靠性问题后,我们决定推出自己的协议来完成这一发现。
我很想得到一些关于我们编写的简单协议的反馈,以及它与 S3 Ping 的比较。它目前的一个限制是它依赖于适用于 Java 的 AWS 开发工具包。
如有必要,我可以包含我的协议栈配置,但它与 UDP 非常相似,只是它使用我们的 EC2Ping 协议而不是多播发现。
我的主要问题如下:
- 这是否提供了比 S3 Ping 更可靠的解决方案?
- 对 AWS Java 开发工具包的依赖是否否定了该解决方案的实用性?(在回馈 JGroups 方面)
任何意见将不胜感激。谢谢
java - EC2 上的 JGroups 节点不说话,尽管他们看到了对方
我正在尝试使用 Hibernate Search,以便从 jgroupsSlave 节点对 Lucene 索引的所有写入都发送到 jgroupsMaster 节点,然后将 Lucene 索引与 Infinispan 共享回从站。一切都在本地工作,但是当节点在 EC2 上发现彼此时,它们似乎没有进行通信。
他们都在互相发送你还活着的消息。
安全组
我有两个 jar,一个用于 master,一个用于 slave,我在他们自己的 EC2 实例上运行。我可以从另一个实例 ping 每个实例,它们都在同一个安全组中,它为我组中任何机器之间的通信定义了以下规则。
ICMP 的所有端口 0-65535 用于 TCP 0-65535 用于 UDP
所以我认为这不是安全组配置问题。
hibernate.properties
infinispan.xml
jgroups-ec2.xml
我直接从最新的 infinispan-core 发行版(5.2.0.Beta3,但我也尝试了我认为的 5.1.4)中复制了这个。我唯一改变的是将他们的 s3_ping 替换为我的,但我再次看到节点写入 s3,并且它们找到了彼此,所以我认为这不是问题。我也开始主/从,将 jgroups.tcp.address 的环境变量设置为他们的私有 IP 地址。我还尝试了一些大大简化的配置,但没有任何成功。
关于问题可能是什么的任何想法?我花了几天时间玩它,它让我发疯。我认为它必须与 jgroups 配置有关,因为它在本地工作并且无法在 EC2 上交谈。
你们还有其他信息想帮助解决这个问题吗?
sockets - jgroup的配置
我在单机上启动了两个 jgroup 进程,使用JChannel channel=new JChannel();
它将使用 jgroups-all.jar 中名为udp.xml的默认 XML 配置文件。
然后我通过执行 netstat 命令查看了端口使用情况。结果如下。
数字 9304 和 2492 是 JVM 进程 ID,而 45588 是端口 ID。
我想知道的是为什么两个进程可以在一台主机上使用同一个端口45588,而IP 0.0.0.0代表什么?
非常感谢。