据我所知,在Cassandra中,当客户端向单个服务器写入数据时,它会写入提交日志(追加式日志而不是随机寻址)。然后它将数据放入存储在内存中的MEMTable。然后确认写入成功。当MEMTable已满时,它作为SSTable(顺序写入)刷新到磁盘上。
在一个名为(node1,node2)的多节点集群中。当客户端向本应驻留在node2中的node1写入数据(根据分配给节点的标记)时。
- 相应的提交日志留在Node1还是Node2?
- 数据进入node1或Node2的哪个MEMTable?
- 相应的SSTable留在Node1还是Node2?
- 当尝试从Node1读取数据时,查询如何提供其他节点中的内存中的数据?