对于我目前的项目,我们决定在一些Linux机器上将我们的应用程序部署到亚马逊的Elastic Computing Cloud.我们使用JGroups进行组通信,并且需要一种可靠的发现机制,该机制不需要使用其他集群成员的地址预先配置每个应用程序(这对于TCPPING是必需的,并且TCPGOSSIP需要'排序').由于我们不能使用UDP多播,因此从我们的选项中排除了多播发现.
我们研究了使用S3 Ping协议,但在阅读之后发现了一些可靠性问题,我们决定推出自己的协议来完成这一发现.
我希望得到一些关于我们编写的简单协议以及它与S3 Ping的比较的反馈.它目前的一个限制是它依赖于AWS SDK for Java.
public class EC2Ping extends Discovery {
private static final Logger log = LoggerFactory.getLogger(EC2Ping.class);
public static final short EC2_PING_PROTOCOL_ID = 1001;
private static final int DEFAULT_JGROUPS_PORT = 7800;
static {
ClassConfigurator.addProtocol(EC2_PING_PROTOCOL_ID, EC2Ping.class);
}
/** The JGroups port number */
private int port = DEFAULT_JGROUPS_PORT;
/** The EC2 client */
private AmazonEC2Client client;
/** The EC2 instance filters */
private List<Filter> filters;
public EC2Ping(EC2Ping src) {
this.client = src.client;
this.port = src.port; …Run Code Online (Sandbox Code Playgroud)