由Cassandra的singleton对象处理的连接数

时间:2015-10-19 12:45:12

标签: cassandra cassandra-2.0 datastax

我有三个节点Cassandra集群,当前服务50次写入/秒。现在,它将是100次写入/秒,以下是我的群集的详细信息:

Keyspace定义:

CREATE KEYSPACE keyspacename WITH REPLICATION = { 'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3 };

分区程序:

 org.apache.cassandra.dht.RandomPartitioner

我在c#(datastax c#driver)中有客户端,我正在使用单例设计模式,或者只创建一个cassandra服务器对象。这将用于从ring写入和读取数据。这样做的原因是tcp连接没有被关闭。直到现在我的戒指工作正常,它能够承受50次/秒的负载。现在它会增加到100次写入/秒。 那么,我的问题是,在我的戒指配置下,相同的设计模式是否能够处理相同的?

C#代码:

public static ISession GetSingleton()
            {
                if (_singleton == null)
                {
                    Cluster cluster = Cluster.Builder().AddContactPoints(ConfigurationManager.AppSettings["cassandraCluster"].ToString().Split(',')).Build();
                    ISession session = cluster.Connect(ConfigurationManager.AppSettings["cassandraKeySpace"].ToString());
                    _singleton = session;
                }
                return _singleton;
            }

1 个答案:

答案 0 :(得分:3)

从Cassandra方面来看,100次写入/秒非常低。它会很容易处理它。

从客户端来看,我认为您的设计没有问题。据我所知,使用Singleton模式是个好主意。但是因为我不知道,我无法给你一个确切的答案:

  • 您的书面数据大小。
  • 您的网络效率如何。
  • 您是使用同步还是异步执行。

通常,我们可以合理地考虑10 ms /写入。通过同步执行,您可以写入100次/秒。但是你不能无限期地去,因为司机不会创建更多的连接。

另一方面,您可以使用 ExecuteAsync 方法异步执行写入。 C#Cassandra驱动程序将为您管理连接池。

我可以给你的另一个提示是PreparedStatement