我有三个节点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;
}
答案 0 :(得分:3)
从Cassandra方面来看,100次写入/秒非常低。它会很容易处理它。
从客户端来看,我认为您的设计没有问题。据我所知,使用Singleton模式是个好主意。但是因为我不知道,我无法给你一个确切的答案:
通常,我们可以合理地考虑10 ms /写入。通过同步执行,您可以写入100次/秒。但是你不能无限期地去,因为司机不会创建更多的连接。
另一方面,您可以使用 ExecuteAsync 方法异步执行写入。 C#Cassandra驱动程序将为您管理连接池。
我可以给你的另一个提示是PreparedStatement。