📜  Cassandra 中的读写路径(1)

📅  最后修改于: 2023-12-03 15:29:56.683000             🧑  作者: Mango

Cassandra 中的读写路径

Cassandra 是一个高性能、分布式的 NoSQL 数据库,它支持水平扩展和高可用性的服务,适用于高可用性互联网应用程序。在 Cassandra 中,数据被存储在节点集合中。Cassandra 的读写操作是如何进行的呢?让我们来了解一下。

写操作路径

Cassandra 中的写操作是基于 Paxos 算法的强一致性协议实现的。

Cassandra 写操作路径

  1. 应用程序向客户端发送写请求。
  2. 客户端将写请求发送给本地的 Coordinator 节点,Coordinator 负责将请求广播到所有 Replica 节点中。
  3. 每个 Replica 节点都将写入请求添加到一个本地提交日志中。
  4. Replica 节点进行 memtable 写入,更新 memtable 并将写入请求记录在 commitlog 中。
  5. Replica 节点将写入请求广播给其他 Replica 节点。
  6. 其他 Replica 节点经过协调后,进行 memtable 写入并更新自己的写入记录。
  7. Commitlog 被定期刷到 disk 中,数据随后由 memtable 写入 SSTable 中。
读操作路径

Cassandra 中的读操作可以通过本地和远程的 Replica 节点进行。读操作以弱一致性方式完成。

Cassandra 读操作路径

  1. 应用程序向客户端发送读请求。
  2. 客户端将读请求发送到本地 Coordinator 节点。
  3. Coordinator 节点将请求发送到本地(或远程) Replica 节点。
  4. Replica 节点搜索 memtable、Bloom Filter、SSTable(如有)中的键值,并提供所需的数据,如数据未找到,则返回无结果。
  5. 如果数据仍未找到,则询问其他 Replica 节点。
  6. 如果确实找到了数据,则根据读取修饰符返回所需的数据。

在读操作期间,尽管 Cassandra 本地和远程的 Replica 节点都参与了查找过程,但数据仅从 Replica 节点返回。

以上是 Cassandra 中的读写操作路径介绍。需要指出的是,用于数据存储和工作流程的底层结构是由许多复杂的基于 Paxos 协议的算法和机制组成的,在此处无法详细讨论。