Cluster computing 如何在jgroup中使用FD_PING和tcp

Cluster computing 如何在jgroup中使用FD_PING和tcp,cluster-computing,jgroups,Cluster Computing,Jgroups,我试图将FD_PING用于jgroup,但失败了。 我已经在jg-protocol-id.xml的协议列表中添加了FD_PING,之后它开始识别FD_PING,但当它在FD_PING中调用命令时,它会发送节点的名称,而不是要验证的ip/主机名。以下是配置。也请让我知道,如果我可以稳定故障检测一些如何。目前,我们得到了很多假警报(因为我正试图使用FD_-PING) 我已经用自己的协议封装了FD\u PING来解决这个问题 import org.jgroups.Address; import o

我试图将FD_PING用于jgroup,但失败了。 我已经在jg-protocol-id.xml的协议列表中添加了FD_PING,之后它开始识别FD_PING,但当它在FD_PING中调用命令时,它会发送节点的名称,而不是要验证的ip/主机名。以下是配置。也请让我知道,如果我可以稳定故障检测一些如何。目前,我们得到了很多假警报(因为我正试图使用FD_-PING)



我已经用自己的协议封装了FD\u PING来解决这个问题

import org.jgroups.Address;
import org.jgroups.Event;
import org.jgroups.PhysicalAddress;
import org.jgroups.protocols.FD_PING;

public class FD_TEST extends FD_PING {

    public FD_ILABS() {
        super();
        updatePingDestination();
    }

    @Override
    public Object up(Event evt) {
        // TODO Auto-generated method stub
        Object up = super.up(evt);
        updatePingDestination();
        return up;
    }

    @Override
    public Object down(Event evt) {
        // TODO Auto-generated method stub
        Object down = super.down(evt);
        updatePingDestination();
        return down;
    }

    private void updatePingDestination() {
        if(ping_dest!=null && !(ping_dest instanceof PhysicalAddress)) {
            Address p = ping_dest;
            ping_dest = (PhysicalAddress)down_prot.down(new Event(87, p));
        }
    }





}

所有协议都是堆叠的,因此您最终可以访问TCP。顺便说一句,jgroups因拥有链式协议而备受赞誉。

我从缓存中看到,只有逻辑地址可用于FD协议,而物理地址仅存储在TP类中。是否有办法在FD级别获取物理地址。
import org.jgroups.Address;
import org.jgroups.Event;
import org.jgroups.PhysicalAddress;
import org.jgroups.protocols.FD_PING;

public class FD_TEST extends FD_PING {

    public FD_ILABS() {
        super();
        updatePingDestination();
    }

    @Override
    public Object up(Event evt) {
        // TODO Auto-generated method stub
        Object up = super.up(evt);
        updatePingDestination();
        return up;
    }

    @Override
    public Object down(Event evt) {
        // TODO Auto-generated method stub
        Object down = super.down(evt);
        updatePingDestination();
        return down;
    }

    private void updatePingDestination() {
        if(ping_dest!=null && !(ping_dest instanceof PhysicalAddress)) {
            Address p = ping_dest;
            ping_dest = (PhysicalAddress)down_prot.down(new Event(87, p));
        }
    }





}