【问题标题】:Connection Pool Types in Astyanax Cassandra clientAstyanax Cassandra 客户端中的连接池类型
【发布时间】:2013-04-28 11:42:02
【问题描述】:

过去几周我们一直在尝试评估不同的 Cassandra clients,所以现在看来​​我们将继续使用 Netflix/Astyanax client

我们正在尝试优化Cassandra database,主要针对read performance。目前,我正在像这样创建Astyanax connection-

/**
 * Creating Cassandra connection using Astyanax client
 *
 */
private CassandraAstyanaxConnection() {

    context = new AstyanaxContext.Builder()
    .forCluster(ModelConstants.CLUSTER)
    .forKeyspace(ModelConstants.KEYSPACE)
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
        .setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
    )
    .withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
        .setPort(9160)
        .setMaxConnsPerHost(40)
        .setSeeds("node1:9160,node2:9160,node3:9160,node4:9160")
    )
    .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
        .setCqlVersion("3.0.0")
        .setTargetCassandraVersion("1.2"))
    .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
    .buildKeyspace(ThriftFamilyFactory.getInstance());

    context.start();
    keyspace = context.getEntity();

    emp_cf = ColumnFamily.newColumnFamily(
        ModelConstants.COLUMN_FAMILY, 
        StringSerializer.get(), 
        StringSerializer.get());
}

问题陈述:-

所以默认情况下,我相信Astyanax client 会使用ConnectionPoolType as ROUND_ROBIN

现在我试图从read performance 的角度了解以下选项中哪个更好?

TOKEN_AWARE or ROUND_ROBIN or BAG

这三者之间有什么区别?以及我们如何决定我们应该使用上述三个中的一个?

关于我们集群的一些背景知识。我们将有单个cross colo cluster24 nodes。含义12 nodes in SLC colo12 nodes in PHX colo

我们将使用NetworkTopologyStrategyreplication factor of 4,意思是2 in each colo。我们将使用LeveledCompactionStrategy

对我上述问题的任何解释都会有很大帮助。会有很多人在生产环境中使用 Astyanax 客户端。任何反馈都会有很大帮助。

感谢您的帮助。

更新:-

仍在寻找可以通过示例向我解释这三者之间的主要区别的答案,以便我更好地理解。我知道这些一般是什么意思,但无法从示例的角度理解它是如何工作的。

【问题讨论】:

    标签: java cassandra astyanax netflix


    【解决方案1】:

    ROUND_ROBIN

    在这种类型的 ConnectionPoolType 中,您的连接将根据主机集以循环方式实例化。

    TOKEN_RANGE

    有点类似于 ROUND_ROBIN 类型,设置一个基本的令牌感知池,它将轮询令牌范围内的所有主机

    对这种类型了解不多,但我猜它会像,您的连接将随机从主机的 BAG 实例化,与令牌范围或循环模式无关。

    【讨论】:

    • 谢谢阿比。你告诉我的事情,我已经知道了。我试图通过看一个简单的例子来更详细地了解它是如何工作的。我主要对 ROUND_ROBIN 与 TOKEN_AWARE 连接池类型之间的区别以及推荐使用什么来提高读取性能感兴趣?
    • hmmm...推荐将是TOKEN_WARE
    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 2017-08-04
    • 1970-01-01
    • 2013-04-18
    • 2012-05-22
    • 2017-12-24
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多