7

我们正在以编程方式创建 Cassandra 节点(自动生成 yaml 并使用CassandraDaemon)。理想情况下,由于配置需要,我们将能够在不同主机上使用不同的端口。这可能吗(通过种子规范或自定义类的实现)?似乎种子列表只能获取IP地址而不是端口。

4

2 回答 2

3

看了Cassandra网络代码中的相关源码后,很明显是不支持这个的。在该newSocket()方法中,远程节点的端口是从静态获取的DatabaseDescriptor.getSSLStoragePort()(摘录如下)。这不会为每个主机或任何挂钩提供不同的值:

public Socket newSocket() throws IOException
{
    // zero means 'bind on any available port.'
    if (isEncryptedChannel())
    {
        return SSLFactory.getSocket(DatabaseDescriptor.getEncryptionOptions(), endPoint(), DatabaseDescriptor.getSSLStoragePort(), FBUtilities.getLocalAddress(), 0);
    }
    else {
        return new Socket(endPoint(), DatabaseDescriptor.getStoragePort(), FBUtilities.getLocalAddress(), 0);
    }
}
于 2013-06-11T16:03:36.633 回答
2

看看https://github.com/pcmanus/ccm,他们在同一个节点上使用多个 cassandra 实例。你可以看到他们是如何做到的。

于 2013-06-07T01:13:08.487 回答