我正在做一个我需要使用的项目Cassandra Database
。我有一个示例程序,可以将数据填充到Cassandra database
. 我正在使用Pelops client
它。
所以现在我正在考虑创建一个Singleton class
forCassandra database
来建立连接Cassandra database
,然后我将使用该实例从Singelton class
我CassandraDAO
的实例插入到 Cassandra 数据库并从 Cassandra 数据库中检索数据。
下面是我迄今为止构建的 Singleton 类,它将连接到 Cassandra 数据库-
public class CassandraConnection {
private static CassandraConnection _instance;
private String keyspace;
private String[] seeds;
private int port;
private String poolName;
public static synchronized CassandraConnection getInstance() {
if (_instance == null) {
_instance = new CassandraConnection();
}
return _instance;
}
private CassandraConnection() {
setKeyspace(ICassandraDo.KEYSPACE_NAME);
setSeeds(ICassandraDo.NODES).split(",");
setPort(ICassandraDo.CASSANDRA_PORT);
setPoolName(ICassandraDo.THRIFT_CONNECTION_POOL);
createPool();
}
//This is the right way to `addPool` in pelops?
private void createPool() {
Pelops.addPool(getPoolName(), getSeeds(), getPort(),
false, getKeyspace(), new Policy());
}
private String setSeeds(String nodes) {
// I am not sure what I am supposed to do here?
// Any guidance will be of great help
}
private void setPoolName(String thriftConnectionPool) {
this.poolName = thriftConnectionPool;
}
private void setPort(int cassandraPort) {
this.port = cassandraPort;
}
private void setKeyspace(String keyspaceName) {
this.keyspace = keyspaceName;
}
public void setSeeds(String[] seeds) {
this.seeds = seeds;
}
public String[] getSeeds() {
return seeds;
}
public int getPort() {
return port;
}
public String getKeyspace() {
return keyspace;
}
public String getPoolName() {
return poolName;
}
}
问题陈述:-
我对上面的代码几乎没有疑问。
- 首先,我应该
setSeeds
在上面的课程中使用方法做什么?任何指示或示例都会有很大帮助。 - 其次,我不确定在创建单例类时这是否是正确的方法?我想知道管理与 pelops 客户端的集群连接的最佳方法是什么。
- 而且,
addPool
在我上面的代码中使用方法的最佳方式是什么?我想,我也搞砸了那里的东西?当我不断看到不同addPool
的方法Pelops class
?所以我应该记住哪种方法,因为我将在生产环境中运行它。
在上面的 Singleton 类准备好之后,我打算在我的DAO
代码中使用上面的类,就像这样-
Mutator mutator = Pelops.createMutator(CassandraConnection.getInstance().getPoolName());
mutator.writeColumns(other data inside)
;
然后也执行选择器以检索数据。
仅供参考,我正在与Cassandra 1.2.3
and合作Scale 7 pelops client
。
任何帮助将不胜感激。提前致谢。
更新代码:-
下面是我更新的代码。
public class CassandraConnection {
private static CassandraConnection _instance;
private String keyspace;
private String[] nodes;
private int port;
private String poolName;
public static synchronized CassandraConnection getInstance() {
if (_instance == null) {
_instance = new CassandraConnection();
}
return _instance;
}
private CassandraConnection() {
setKeyspace(ICassandraDo.KEYSPACE_NAME);
setNodes(ICassandraDo.NODES);
setPort(ICassandraDo.CASSANDRA_PORT);
setPoolName(ICassandraDo.THRIFT_CONNECTION_POOL);
createPool();
}
private void createPool() {
Pelops.addPool(getPoolName(), getCluster(), getKeyspace());
}
private Cluster getCluster() {
Config casconf = new Config(ICassandraDo.CASSANDRA_PORT, true, 0);
Cluster cluster= new Cluster(nodes, casconf, ICassandraDo.NODE_DISCOVERY);
return cluster;
}
private void setPoolName(String thriftConnectionPool) {
this.poolName = thriftConnectionPool;
}
private void setPort(int cassandraPort) {
this.port = cassandraPort;
}
private void setKeyspace(String keyspaceName) {
this.keyspace = keyspaceName;
}
private void setNodes(String nodes) {
this.nodes = nodes.split(",");
}
public int getPort() {
return port;
}
public String getKeyspace() {
return keyspace;
}
public String getPoolName() {
return poolName;
}
}
仅供参考,就我而言,我将有两个集群,每个集群有 12 个节点。
任何人都可以看看,让我知道我得到了正确的一切吗?谢谢您的帮助。