本文概述
- Cassandra中的数据复制
- Cassandra的成分
- Cassandra查询语言
- 写操作
- 读取操作
- 在Cassandra中, 每个节点都是独立的, 并且同时互连到其他节点。集群中的所有节点都扮演相同的角色。
- 群集中的每个节点都可以接受读写请求, 而不管数据实际位于群集中的何处。
- 在一个节点发生故障的情况下, 可以从网络中的其他节点处理读/写请求。
请参见下图以了解Cassandra如何在集群中的节点之间使用数据复制以确保没有单点故障的示意图。
文章图片
Cassandra的成分 【Cassandra架构解析】Cassandra的主要成分是:
- 节点:Cassandra节点是存储数据的地方。
- 数据中心:数据中心是相关节点的集合。
- 群集:群集是包含一个或多个数据中心的组件。
- 提交日志:在Cassandra中, 提交日志是一种崩溃恢复机制。每个写操作都会写入提交日志。
- 内存表:内存表是驻留内存的数据结构。提交日志后, 数据将被写入内存表。有时, 对于单列家庭, 将有多个内存表。
- SSTable:这是一个磁盘文件, 当其内容达到阈值时, 会将数据从内存表中刷新到该磁盘文件中。
- 布隆过滤器:这些只是用于测试元素是否为集合成员的快速, 不确定性算法。这是一种特殊的缓存。每次查询后都会访问Bloom筛选器。
客户端可以使用任何节点进行读写操作。该节点(协调器)在客户端和保存数据的节点之间扮演代理角色。
写操作 节点的每个写入活动都由写入节点中的提交日志捕获。之后, 将捕获数据并将其存储在内存表中。每当内存表已满时, 数据将被写入SStable数据文件中。所有写入将自动分区并在整个群集中复制。 Cassandra定期合并SSTable, 丢弃不必要的数据。
文章图片
读取操作 在读取操作中, Cassandra从内存表中获取值, 并检查Bloom筛选器以找到包含所需数据的适当SSTable。
协调器将三种类型的读取请求发送到副本。
- 直接要求
- 摘要请求
- 阅读维修要求
之后, 协调器将摘要请求发送到所有其余副本。如果有任何节点给出了过期的值, 则后台读取修复请求将更新该数据。此过程称为读取修复机制。
文章图片