📅  最后修改于: 2023-12-03 15:29:56.683000             🧑  作者: Mango
Cassandra 中的读写路径
Cassandra 是一个高性能、分布式的 NoSQL 数据库,它支持水平扩展和高可用性的服务,适用于高可用性互联网应用程序。在 Cassandra 中,数据被存储在节点集合中。Cassandra 的读写操作是如何进行的呢?让我们来了解一下。
写操作路径
Cassandra 中的写操作是基于 Paxos 算法的强一致性协议实现的。
- 应用程序向客户端发送写请求。
- 客户端将写请求发送给本地的 Coordinator 节点,Coordinator 负责将请求广播到所有 Replica 节点中。
- 每个 Replica 节点都将写入请求添加到一个本地提交日志中。
- Replica 节点进行 memtable 写入,更新 memtable 并将写入请求记录在 commitlog 中。
- Replica 节点将写入请求广播给其他 Replica 节点。
- 其他 Replica 节点经过协调后,进行 memtable 写入并更新自己的写入记录。
- Commitlog 被定期刷到 disk 中,数据随后由 memtable 写入 SSTable 中。
读操作路径
Cassandra 中的读操作可以通过本地和远程的 Replica 节点进行。读操作以弱一致性方式完成。
- 应用程序向客户端发送读请求。
- 客户端将读请求发送到本地 Coordinator 节点。
- Coordinator 节点将请求发送到本地(或远程) Replica 节点。
- Replica 节点搜索 memtable、Bloom Filter、SSTable(如有)中的键值,并提供所需的数据,如数据未找到,则返回无结果。
- 如果数据仍未找到,则询问其他 Replica 节点。
- 如果确实找到了数据,则根据读取修饰符返回所需的数据。
在读操作期间,尽管 Cassandra 本地和远程的 Replica 节点都参与了查找过程,但数据仅从 Replica 节点返回。
以上是 Cassandra 中的读写操作路径介绍。需要指出的是,用于数据存储和工作流程的底层结构是由许多复杂的基于 Paxos 协议的算法和机制组成的,在此处无法详细讨论。