Cassandra 教程

Cassandra键空间操作

Cassandra表操作

Cassandra数据CRUD操作

Cassandra CQL数据类型

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/cassandra-architecture.html

Cassandra的架构


Cassandra 旨在处理多个节点之间的大数据工作负载,而无需担心单点故障。它在其节点之间具有对等分布式系统,数据分布在集群中的所有节点上。

  • 在 Cassandra 中,每个节点是独立的,同时与其他节点互连。集群中的所有节点都扮演着相同的角色。
  • 集群中的每个节点都可以接受读取和写入请求,而不管数据实际位于集群中的位置。
  • 在一个节点发生故障的情况下,可以从网络中的其他节点提供读/写请求。

Cassandra 中的数据复制

在 Cassandra 中,集群中的节点作为给定数据片段的副本。如果某些节点以超时值响应,Cassandra 会将最新的值返回给客户端。返回最新值后,Cassandra 会在后台执行读取修复,以更新旧值。

请参阅以下图示,以了解 Cassandra 如何在集群中的节点之间使用数据复制的原理图,以确保没有单点故障。

Cassandra 的组成部分

Cassandra 的主要组成部分主要有:

  • 节点(Node):Cassandra 节点是存储数据的地方。
  • 数据中心(Data center):数据中心是相关节点的集合。
  • 集群(Cluster):集群是包含一个或多个数据中心的组件。
  • 提交日志(Commit log):在 Cassandra 中,提交日志是一个崩溃恢复机制。每个写入操作都将写入提交日志。
  • 存储表(Mem-table):内存表是内存驻留的数据结构。提交日志后,数据将被写入内存表。有时,对于单列系列,将有多个内容表。
  • SSTable:当内容达到阈值时,它是从内存表刷新数据的磁盘文件。
  • 布鲁姆过滤器(Bloom filter):这些只是快速,非确定性的,用于测试元素是否是集合成员的算法。它是一种特殊的缓存。每次查询后都会访问 Bloom 过滤器。

Cassandra 查询语言

Cassandra 查询语言(CQL)用于通过其节点访问 Cassandra。CQL 将数据库(Keyspace)视为表的容器。程序员使用cqlsh:提示使用 CQL 或单独的应用程序语言驱动程序。
客户端可以接近任何节点进行读写操作。该节点(协调器)在客户机和保存数据的节点之间扮演代理。

写操作

节点的每个写入活动都由写入节点的提交日志捕获。之后,数据将被捕获并存储在内存表中。每当内存表已满时,数据将被写入SStable数据文件。所有写入在整个集群中自动分区和复制。Cassandra 定期整合 SSTables,丢弃不必要的数据。

读操作

在读操作中,Cassandra 从mem-table中获取值,并检查bloom过滤器以找到包含所需数据的适当 SSTable。

有三种类型的读请求被协调者发送给副本。

  • 直接请求
  • 摘要要求
  • 读修复请求

协调器发送的直接请求到副本中的一个。之后,协调器将摘要请求发送到由一致性级别指定的副本数,并检查返回的数据是否是更新的数据。

之后,协调器将所有剩余的副本发送摘要请求。如果任何节点发出过期值,后台读修复请求将更新该数据。这个过程称为读修复机制。