需要帮助使用带有多dc设置的express cassandra吗

pod7payv  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(701)

你好,stack overflow社区!
我需要一些帮助,找出正确的方法建立连接的帮助下,表达Cassandraorm模型在nodejs为我的多直流电(总直流电=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?我们计划使用本地的quoram,并希望我们的分析应用程序在所有读写操作中只使用分析dc。
我试过阅读express cassandra和“cassandra驱动程序”模块的源代码,但我无法找到解决方案>
任何帮助都将不胜感激!

6qqygrtg

6qqygrtg1#

从另一个dc提供联系点从来都不是一个好主意-大多数驱动程序(不记得about node.js driver)都在执行联系点的洗牌,因此它可能会首先联系另一个dc中的节点,并从该节点的信息中提取dc名称,并且会认为该dc是应用程序的本地名称,因此,本地仲裁查询将针对分析dc执行,这将导致问题。
如果显式地为应用程序设置本地的dc name,而不是从接触点隐式地检测它,则可以使代码更加防弹。有关详细信息,请参阅驱动程序文档(在版本4.0中,开发人员必须指定本地dc的名称!)

相关问题