我是 cassandra 的新手,但有 Nosql 的背景和其他技术的高可用性。几天前我安装了 Cassandra 3.0,但听起来 Datastax php 驱动程序根本不支持它!所以我降级到 2.1.11 版本并编写了一个简单的 php 脚本来使用 Datastax php-driver 对其进行查询,它可以正常工作。
<?php
try {
$cluster = Cassandra::cluster()
->withContactPoints('127.0.0.1')
->build();
$keyspace = 'mykeysssspace';
$session = $cluster->connect($keyspace);
$statement = new Cassandra\SimpleStatement('SELECT userid, created_date, email FROM users');
$future = $session->executeAsync($statement);
$result = $future->get();
foreach ($result as $row) {
printf("userId: %s, email: %s\n", $row['userid'], $row['email']);
}
}catch(Exception $e) {
print $e->getMessage();
}
?>
然后我在同一台机器(Ubuntu 11.10!)中使用不同的 IP 地址启动了两个 Cassandra 实例。然后将php代码更改为:
$cluster = Cassandra::cluster()
->withContactPoints('127.0.0.1', '127.0.0.2')
->build();
问题是,只要两个实例都按预期运行,并且 php 输出预期结果。但是当我停止其中一个实例(不管是哪一个)时,它会给出
当前策略中的所有主机都已尝试但不可用或失败
即使我把它改回
$cluster = Cassandra::cluster()
->withContactPoints('running_instance_ip')
->build();
它给了我同样的错误。但是 cqlsh 在每种情况下都有效。
与 Datastax php 驱动程序有关吗?