Cassandra 连接最佳实践
Cassandra connections best practice
我正在使用Node JS和Cassandra,我想知道最好的交互方式是什么。我有多个与 Cassandra 交互的模块,我想知道它是否更好
- 为所有模块保持单一连接
- 为每个模块设置一个连接,或者如果最好是;
- 每次我有请求时都连接到卡桑德拉。
此 Web 应用程序将 Cassandra 用于大多数请求。
我建议您使用 Cassandra 的 DataStax Node.js 驱动程序,它具有连接池和透明故障转移功能,您只需要执行查询,它将为您处理其余的工作。
var cassandra = require('cassandra-driver');
var client = new cassandra.Client({
contactPoints: ['host1', 'host2'],
keyspace: 'ks1'
});
var query = 'SELECT email, last_name FROM user_profiles WHERE key=?';
//the driver will handle connection pool and failover
client.execute(query, ['guy'], function(err, result) {
assert.ifError(err);
console.log('User profile email ' + result.rows[0].email);
});
免责声明:我是该项目的活跃开发人员
我会
汇集连接并回收它们,而不是使用您列出的选项之一。这样,您就不需要销毁已创建的连接。我唯一会厌倦的是游泳池太大,所以请确保设置一个合理的阈值。
像这样:
no connections are available in pool
create connection (add it back once finished using it)
connections are available in pool
fetch connection from pool
选择池而不是硬编码数字的原因:
- 为所有模块保持单个连接 - 这将是一个瓶颈,除非您正在运行单线程应用程序并且您不是
- 为每个模块设置连接 - 您需要向我们提供更多上下文。这可能是一个基于每个模块线程化的好方法。
- 每次我有请求时都连接到 Cassandra - 建立连接并不便宜(下面的代码),所以不要丢弃它们!
.
Cluster cluster = Cluster.builder().addContactPoints("localhost").build();
long start = System.currentTimeMillis();
Session session = cluster.connect();
System.out.println(String.format("Took %s ms", System.currentTimeMillis() - start));
输出:490 毫秒
相关文章:
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 有条件更新d3.js力图中节点的最佳方法
- 如何使用密码检测网络中的状态连接
- 如何处理node.js节点mongodb中的连接和查询队列
- 什么's是连接供应商js文件的最佳方式
- Javascript.连接两组对象的最佳方式,如SQL
- 保持长轮询连接打开的最佳方式
- Nodejs 实现数据库连接 (mysql) 的最佳方式
- Cassandra 连接最佳实践
- 在javascript中检查互联网连接的最佳实践
- 最佳数据库连接数(node-mysql)
- 连接多个JavaScript应用程序/类的最佳方式
- 寻找在多个javascript文件中使用一个mongodb连接的最佳实践
- 使用MongoClient的最佳实践是什么?在一个有很多路由器的Express应用中连接
- 套接字IO:检索特定连接客户端套接字的最佳方法
- Firebase排行榜,最佳执行.SQL连接和顺序
- 在AngularJS中为$http设置一个服务或工厂来连接REST API的最佳实践
- 在Javascript中连接地址的最佳方式
- 在Express 4中打开mysql连接的最佳方法