2013-05-04 43 views
1

從過去幾周我們試圖評估不同的Cassandra clients,所以現在看起來我們將繼續前進Netflix/Astyanax clientAstyanax Cassandra客戶端的連接池類型

我們正在努力優化Cassandra database主要是爲read performance。目前,我喜歡這個 -

/** 
* 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 connection: -

所以在默認情況下,我相信Astyanax client將使用ConnectionPoolType as ROUND_ROBIN

現在我想從read performance的角度來理解哪一個會更好的從下面的選項中看出來?

TOKEN_AWARE or ROUND_ROBIN or BAG

而正是這三個之間的區別?我們如何決定我們應該使用三個以上的其中一個?

關於我們集羣的一些背景知識。我們將有24 nodes單一cross colo cluster。含義12 nodes in SLC colo12 nodes in PHX colo

而我們打算使用NetworkTopologyStrategyreplication factor of 4,意思是2 in each colo。我們將使用LeveledCompactionStrategy

對我上面的問題的任何解釋都會有很大的幫助。會有很多人在生產環境中使用Astyanax客戶端。任何反饋都會有很大的幫助。

感謝您的幫助。

更新: -

還在尋找一個答案可以解釋我什麼是用一個例子這三個之間的主要區別,這樣我可以更好地理解。我知道這些通常意味着什麼,但不能從一個例子的角度理解它將如何實現。

回答

1

ROUND_ROBIN

在這種類型的ConnectionPoolType,你的連接將在循環賽類型取決於宿主集實例化。

TOKEN_RANGE

這有點類似於ROUND_ROBIN類型,建立了一個基本的令牌意識到池將令牌範圍

內循環賽的所有主機BAG

不要知道這種類型,但我想它會是這樣的,你的連接將隨機地從主機的BAG實例化,與令牌範圍或循環模式無關。

+0

Thanks abhi。你告訴我的事情,我已經意識到了。我試圖通過查看一個簡單的例子來了解更多細節。我主要關注ROUND_ROBIN與TOKEN_AWARE連接池類型之間的區別以及推薦用於讀取性能的內容? – ferhan 2013-05-04 16:34:45

+0

嗯...建議將TOKEN_WARE – abhi 2013-05-04 16:40:48