gpt4 book ai didi

cassandra - cassandra 如何查询另一个节点的 SSTable 中存在的数据

转载 作者:行者123 更新时间:2023-12-01 00:48:33 24 4
gpt4 key购买 nike

根据我在 cassandra 中的理解
当客户端将数据写入单个服务器时,它会写入提交日志(仅追加日志而没有随机搜索)。然后将数据放入驻留在内存中的 MEMTable 中。然后确认写入成功。当 MEMTable 已满时,它会作为 SSTable 刷新到磁盘(顺序写入)

在具有 2 个名为 (node1,node2) 的节点的多节点集群中。
当客户端将数据写入应该驻留在 node2 中的 node1 时(根据分配给节点的 token )。

  • 对应的提交日志在Node1还是Node2?
  • 数据去 node1 还是 node2 哪个 MEMTable?
  • 对应的SSTable在Node1还是Node2上?
  • 查询如何提供存在于其他节点内存中的数据(尝试从 Node1 读取时)?
  • 最佳答案

    客户端在发出写入时连接到的节点成为该写入的协调器。所以在你的场景中,node1 将是协调器。然后,节点 1 将计算写入的 token 哈希值,并查看该 token 是否归节点 2 所有。然后它将写入转发到 node2。

    Node2 将接收来自 node1 的写入请求,并且由于它是本地写入,因此会将其添加到 node2 上的 commitlog 和 memtable。这样,如果 node2 在刷新内存表之前宕机,它可以通过重放提交日志来重建内存表。

    当内存表在 node2 上被刷新时,它将被保存到 node2 上的磁盘。

    一旦在 node2 上完成写入,它会告诉 node1 写入成功,然后 node1 会告诉客户端写入成功。

    读取的工作方式几乎相同。客户端向成为读取协调器的节点发出读取。协调器联系拥有数据 token 的节点,并将结果发送回协调器。协调器根据最新的时间戳合并结果,并将最终结果发送回客户端。

    关于cassandra - cassandra 如何查询另一个节点的 SSTable 中存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32747104/

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