在使用 express cassandra 和 multi-dc 设置时需要帮助
Need help in using express cassandra with multi-dc setup
你好堆栈溢出社区!
我需要一些帮助来找出在 nodejs 中的 express cassandra orm 模型的帮助下为我的多 dc(总 dc =2)cassandra 设置建立连接的正确方法。
我们目前只使用 1 个 dc 和 express cassandra,因此我们只提供 2 个种子节点 ip 地址作为 express cassandra 的联系点,如下所示
models.setDirectory(__dirname + '/models').bind(
{
clientOptions: {
contactPoints: cassandraContactPoints,
protocolOptions: { port: 9042 },
keyspace: 'keyspace_name',
queryOptions: { consistency: models.consistencies.one }
},
ormOptions: {
defaultReplicationStrategy: {
class: 'NetworkTopologyStrategy',
replication_factor: 2,
},
createKeyspace: false,
dropTableOnSchemaChange: false
}
},
function (err) {
if (err) {
throw err;
} else {
console.log('connection established');
postDBConnection(models, 'keyspace name again');
}
}
这里要注意的是,我们将 cassandraContactPoints 指定为我们现有 dc 的仅 2 个节点的数组。
由于我们正在推进一个单独的 DC 用于分析目的,我想知道我们是否应该在同一数组中提供新 DC 的 IP 地址,即 cassandraContactPoints ?我们计划使用 LOCAL_QUORAM 并希望我们的分析应用程序仅使用分析 dc 进行所有读取和写入。
我已经尝试阅读 express cassandra 和 'cassandra driver' 模块的源代码,但我无法找到解决方案>
如有任何帮助,我们将不胜感激!
从另一个 DC 提供接触点是 never a good idea - 大多数驱动程序(不记得大约 Node.js 驱动程序)正在执行接触点的洗牌,因此它可能首先接触节点在另一个 DC 中,并从该节点的信息中提取 DC 名称,并且会认为该 DC 是应用程序本地的,因此将针对 Analytical DC 执行 LOCAL_QUORUM 查询,这将导致问题。
如果您显式设置应用程序本地的 DC 名称,而不是从接触点隐式检测它,则可以使您的代码更能抵御此类问题。参见driver's documentation for details(在4.0版本中,开发者必须指定本地DC的名称!)
你好堆栈溢出社区!
我需要一些帮助来找出在 nodejs 中的 express cassandra orm 模型的帮助下为我的多 dc(总 dc =2)cassandra 设置建立连接的正确方法。
我们目前只使用 1 个 dc 和 express cassandra,因此我们只提供 2 个种子节点 ip 地址作为 express cassandra 的联系点,如下所示
models.setDirectory(__dirname + '/models').bind(
{
clientOptions: {
contactPoints: cassandraContactPoints,
protocolOptions: { port: 9042 },
keyspace: 'keyspace_name',
queryOptions: { consistency: models.consistencies.one }
},
ormOptions: {
defaultReplicationStrategy: {
class: 'NetworkTopologyStrategy',
replication_factor: 2,
},
createKeyspace: false,
dropTableOnSchemaChange: false
}
},
function (err) {
if (err) {
throw err;
} else {
console.log('connection established');
postDBConnection(models, 'keyspace name again');
}
}
这里要注意的是,我们将 cassandraContactPoints 指定为我们现有 dc 的仅 2 个节点的数组。
由于我们正在推进一个单独的 DC 用于分析目的,我想知道我们是否应该在同一数组中提供新 DC 的 IP 地址,即 cassandraContactPoints ?我们计划使用 LOCAL_QUORAM 并希望我们的分析应用程序仅使用分析 dc 进行所有读取和写入。
我已经尝试阅读 express cassandra 和 'cassandra driver' 模块的源代码,但我无法找到解决方案>
如有任何帮助,我们将不胜感激!
从另一个 DC 提供接触点是 never a good idea - 大多数驱动程序(不记得大约 Node.js 驱动程序)正在执行接触点的洗牌,因此它可能首先接触节点在另一个 DC 中,并从该节点的信息中提取 DC 名称,并且会认为该 DC 是应用程序本地的,因此将针对 Analytical DC 执行 LOCAL_QUORUM 查询,这将导致问题。
如果您显式设置应用程序本地的 DC 名称,而不是从接触点隐式检测它,则可以使您的代码更能抵御此类问题。参见driver's documentation for details(在4.0版本中,开发者必须指定本地DC的名称!)