gpt4 book ai didi

go - 一致的 N1QL 查询 Couchbase GOCB sdk

转载 作者:IT王子 更新时间:2023-10-29 02:13:09 26 4
gpt4 key购买 nike

我目前正在为我的 Go Actor 库实现 EventSourcing。我现在遇到的问题是,当一个 actor 重新启动并需要从事件日志中重播它的所有状态时,查询可能会返回不一致的数据。我知道我可以使用 MutationToken

解决这个问题

但是,如果我这样做,我将被迫按顺序写入所有事件,即最后一个事件。

这样,最后一个事件的变异 token 就足以为特定参与者一致地获取所有数据。

然而,这非常慢,按顺序写入大约 10 000 个事件,我的设置大约需要 5 秒。

如果我改为使用 go 例程编写那 10 000 个异步,我可以在不到一秒的时间内编写所有数据。但是,写入的顺序是不确定的,我可以知道我可以信任哪个突变 token 。例如由于去例程调度 AFAIK,事件 999 可能会在事件 843 之前写入。

我有哪些选择?

最佳答案

从技术上讲,MutationToken 和异步操作并不相互排斥。它可能能够在不更改客户端的情况下完成(我不确定),但这里的关键是获取所有 MutationToken 响应,然后使用所有这些响应发出每个 vbucket 的最高数量的查询。

这里的关键是给定一个 MutationToken ,您可以将其他人添加到其中。我没有直接看到执行此操作的方法,但由于在内部它只是一张 map ,它应该相对简单,我相信我们 (Couchbase) 会为此做出贡献。在最低级别,它只是在发出查询时提供给查询的 vbucket 序列映射。

关于go - 一致的 N1QL 查询 Couchbase GOCB sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39815387/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com