📅  最后修改于: 2020-11-22 06:48:36             🧑  作者: Mango
Cassandra旨在处理多个节点上的大数据工作负载而没有单点故障。它在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间。
在Cassandra中,群集中的节点充当给定数据片段的副本。如果某些节点的响应值已过期,则Cassandra会将最新值返回给客户端。返回最新值后,Cassandra在后台执行读取修复以更新过时的值。
请参见下图以了解Cassandra如何在集群中的节点之间使用数据复制以确保没有单点故障的示意图。
Cassandra的主要成分是:
Cassandra查询语言(CQL)用于通过其节点访问Cassandra。 CQL将数据库(键空间)视为表的容器。程序员使用cqlsh:使用CQL或单独的应用程序语言驱动程序的提示。
客户端可以使用任何节点进行读写操作。该节点(协调器)在客户端和保存数据的节点之间扮演代理角色。
节点的每个写入活动均由写入节点中的提交日志捕获。之后,将捕获数据并将其存储在内存表中。每当内存表已满时,数据将被写入SStable数据文件中。所有写入将自动分区并在整个群集中复制。 Cassandra定期合并SSTable,丢弃不必要的数据。
在读取操作中,Cassandra从内存表中获取值,并检查Bloom筛选器以找到包含所需数据的适当SSTable。
协调器将三种类型的读取请求发送到副本。
协调器将直接请求发送到副本之一。之后,协调器将摘要请求发送到一致性级别指定的副本数,并检查返回的数据是否为更新的数据。
此后,协调器将摘要请求发送到所有其余副本。如果有任何节点给出了过时的值,则后台读取修复请求将更新该数据。此过程称为读取修复机制。