- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Cassandra 的一致性有疑问。我在集群中有 3 个 Cassandra 节点(版本 2.0.14.352),我正在使用 consistency level QUORUM 读写,我的 replicationfactor 是 3。如果我明白this就我而言,Cassandra 应该是一致的,因为 2+2>3。但是我用 java 编写了一个测试,我使用 datastax-driver 非常快速地将一些数据插入到 cassandra 中:
final Instant t1 = Instant.parse("2000-01-01T00:00:00.000Z");
final Instant t2 = Instant.parse("2000-02-01T00:00:00.000Z");
for (int i = 0; i < 100; i++) {
dataProvider.setValue(t1, new Double(1));
//If the next line is removed, the test will pass
dataProvider.setValue(t2, new Double(3));
dataProvider.saveToDB();
dataProvider.clear();
assertEquals("i=" + i, new Double(3), dataProvider.getValue(t2));
assertEquals("i=" + i, new Double(1), dataProvider.getValue(t1));
dataProvider.setValue(t1, new Double(2));
dataProvider.saveToDB();
dataProvider.clear();
assertEquals("i=" + i, new Double(2), dataProvider.getValue(t1));
dataProvider.setValue(t1, new Double(101));
dataProvider.saveToDB();
dataProvider.clear();
assertEquals("i=" + i, new Double(101), dataProvider.getValue(t1));
}
与对应的表格
CREATE TABLE keyspace.table(
id text,
year int,
month int,
time timestamp,
value double,
PRIMARY KEY ((id, year, month), time)
)
dataProvider.setValue() 内部将给定值放入 NavigableMap。 dataProvider.saveToDB() 将数据插入到 Cassandra 中。在这里,我一方面尝试异步插入数据并等待所有 ResultSetFuture 完成,另一方面我同步执行语句。但这仅影响性能。详细的保存方法看起来像
final List<ResultSetFuture> sets = newLinkedList();
Batch batch = QueryBuilder.batch();
int batchsize=0;
for (Map.Entry<Instant, Double> entry : valueMap) {
final Instant instant = entry.getKey();
final ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("UTC"));
final Date date = Date.from(instant);
final Insert insert = QueryBuilder.insertInto(table)
.value(ID, id)
.value(YEAR, zonedDateTime.getYear())
.value(MONTH, zonedDateTime.getMonthValue())
.value(TIME, date)
.value(VALUE, entry.getValue());
batch.add(insert);
++batchsize;
if(batchsize % 200 == 0){
sets.add(cassandraConnector.executeAsync(batch));
batch = QueryBuilder.batch();
}
}
if(batchsize % 200 != 0) { //es gibt noch nicht abgeschickte Statements
sets.add(cassandraConnector.executeAsync(batch));
}
cassandraConnector.waitForFinish(sets);
cassandraConnector 管理连接。我正在等待所有结果集完成
public boolean waitForFinish(List<ResultSetFuture> sets) {
ResultSet result = null;
for (final ResultSetFuture resultSetFuture : sets) {
// Wait until finished
try {
result = resultSetFuture.get();
} catch (InterruptedException e) {
resultSetFuture.cancel(true);
e.printStackTrace();
return false;
} catch (ExecutionException e) {
e.printStackTrace();
if (result != null) {
ExecutionInfo executionInfo = result.getExecutionInfo();
System.out.println("Timout from server with IP: " + executionInfo.getTriedHosts());
}
return false;
}
}
return true;
}
奇怪的是,如果我删除注释下方的行,测试就会通过,而不管我执行它的频率如何。但是,如果我在不删除该行的情况下运行测试,有时它会在第一个循环中失败,但有时它会运行 3 个循环直到失败。此外,它总是在不同的行失败。例如
java.lang.AssertionError: i=0
Expected :101
Actual :2
我也有
java.lang.AssertionError: i=2
Expected :2
Actual :101
所以看起来 Cassandra 写了 1,然后写了 2 Cassandra 恢复了我在 1 之前写的 101。有人对这种行为有解释吗?如果我删除该行,为什么测试会通过?我正在写不同的分区。我尝试将一致性级别更改为 ALL,但行为没有改变。
最佳答案
我解决了。显然时钟不是 100% 同步的。当我创建插入语句时,我添加了 .using(timestamp(System.nanoTime()/1000));,现在测试通过了。
关于Cassandra 不一致,尽管 QUORUM 一致性级别与复制因子 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31286115/
我目前正在运行一个节点。我正在尝试为 Cassandra 启用密码身份验证。 我正在遵循本指南:http://cassandra.apache.org/doc/latest/operating/sec
基于 http://docs.datastax.com/en/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html 写入一致性 The c
我写了一份没有可升级逻辑的智能合约,现在我想通过一些更改来更新同一个智能合约。是否可以将数据从旧合约存储复制到新合约? 最佳答案 没有自动的方法可以做到这一点。 您的新契约(Contract)将需要接
我正在为依赖 jpmorganchase quorum 的 Java 项目开发一些集成测试(旨在在专用的 Maven 目标中执行) 。该项目与其他几个服务交互,每个服务都在自己的 docker 容器中
我正在阅读有关 Cassandra 的内容,并了解到有仲裁概念(即,如果有多个节点/副本存储特定 key ,则在读取操作期间选择并返回在这些副本中占多数的数据)来处理一致性在读操作期间。 我的怀疑可能
我们有 5 个节点 zookeeper quorum ( A,B,C,D,E ) 在生产中运行,上周有 1 个节点宕机( E ) 。仲裁是健康的,但我们需要用新的健康节点 ( F ) 替换 ( E )
假设我有 50 机器部署在多个位置,每台机器都有 Linux 作为操作系统 . 机器没有持续的互联网连接,每 2 小时没有连接,它们有 45 分钟的 Wi-Fi 连接时间。 在这 2 小时内,机器通过
我对仲裁编程很陌生。我已经在以太坊上制作了一些具有可靠性的智能合约,并使用 Truffle、React 和 Metamask 制作了一些 dapp。 现在我做了这个 Quorum 教程:https:/
我有一个通过 Kops 分布在 AWS 上的 Kubernetes 集群,该集群由 3 个主节点组成,每个主节点位于不同的 AZ 中。众所周知,Kops通过两个pod实现Etcd在每个master节点
我需要了解 Cassandra 3.0 的读取修复。例如,我有三个节点A,B和C。我的复制因子是3。现在,我用Quorum写入,并且它在节点A和B上成功写入,因此客户端将收到成功,但不知何故数据没有写
我对 Cassandra 的一致性有疑问。我在集群中有 3 个 Cassandra 节点(版本 2.0.14.352),我正在使用 consistency level QUORUM 读写,我的 rep
当我们使用 Quorum 进行读写时,我在使用 Hector 和 Cassandra 时遇到了一致性问题。 我使用 MultigetSubSliceQuery 从 super 列限制大小 100 查询
从技术上讲,redis 日志中的“quorum reached”是什么意思,这是问题吗?我是否缺少调整 redis.conf 参数来修复它的任何内容? Redis 日志消息: Marking node
如果有人可以帮助解决以下问题,我们将不胜感激。 *RF=复制因子 *CL=一致性级别 我们有强一致性和更高可用性的需求。因此,我一直在通过保持 RF=7(每个节点上的 100% 数据)和 CL=QUO
我是 ElasticSearch 的新手,我正在为一个项目评估它。 在 ES 中,Replication 可以是同步的也可以是异步的。在异步的情况下,一旦将文档写入主分片,客户端就会返回成功。然后将文
我正在使用表映射器和缩减器对大规模问题进行一些测试。在某一点之后,当工作完成 80% 时,我的 reducer 开始出现故障。从我查看系统日志时可以看出,问题是我的一个动物园管理员试图连接到本地主机,
这个问题在这里已经有了答案: Apache Kafka error on windows - Couldnot find or load main class QuorumPeerMain (16
假设我有 3 个节点,RF 为 3,并使用 QUORUM CL。当我向集群写入数据记录时,如果一个节点成功,一个节点失败。那么整个写请求都失败了,那么success节点会怎样呢?会自动回滚吗?否则它将
我正在读这个 post关于 Cassandra 中的读取操作和一致性级别。根据这篇文章: 例如,在复制因子为 3 且读取一致性级别为 QUORUM 的集群中,联系给定行的 3 个副本中的 2 个以完成
如何使用 Web3j 的仲裁客户端发送公共(public)交易? 目前,我正在使用此代码发送私有(private)交易,即使我的“privyFor”列表为空,它也会作为私有(private)交易发送。
我是一名优秀的程序员,十分优秀!