异步插入到 cassandra 并保存每个键的插入顺序

Asynchronous inserts to cassandra with save order of inserts per key

我有一组有序的传入事件,我需要将它们插入到 Cassandra 中。我想利用异步插入的速度,但我的传入事件可能有目标 table.

的重复项

如果我没理解错的话,那么异步插入在这种情况下是不能保证数据一致性的,因为异步执行意味着异步操作的程序顺序,这意味着不能保证异步操作的顺序,但我无法做到在 java 中实现一个示例,其中异步插入的顺序与顺序不匹配。而且我在任何与使用 Cassandra 驱动程序 (datastax-java-driver).

的异步插入相关的文档中也找不到关于此的信息

在这种情况下,我是否必须在异步插入之前处理我这边的重复数据删除以确保数据一致性?

如果您需要我正在做的示例代码:

@Autowired
private ReactiveCassandraRepository repository;

...

Flux.from(eventsList)
.flatMap(value -> repository.save(value))
.subscribe()

这不是真正的问题,您绝对可以使用异步写入来最大化吞吐量。

需要注意的重要一点是“顺序”不是由异步请求到达集群的时间决定的。默认情况下,Java 驱动程序 (v3.0+) 会分配一个客户端时间戳,这将是请求的写入时间。

读取数据时,根据时间戳只返回最新版本,不会重复。干杯!