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