Cassandra 架构解释:综合教程
已发表: 2021-03-10自从在 Facebook 成立以来,Cassandra 已经成为最受欢迎的 Apache 项目之一。 它是一种广泛使用的开源、高性能和分布式数据库,使软件工程师、数据科学家和 Web 开发人员的生活更加轻松。
这个强大的数据库解决方案的用户包括 IBM、Facebook、Reddit、eBay 和 Twitter。
但是,要熟悉 Cassandra,您必须了解它的架构,而 Apache Cassandra 架构可能有点难以理解。
这就是为什么我们创建了以下关于 Cassandra 架构的介绍性指南。 它将使您熟悉 Cassandra 架构的所有必要概念:
目录
Cassandra 架构基础
Apache Cassandra 架构没有主节点或从节点。 相反,它具有环状架构,其中节点在逻辑上分布在一个环中。 该架构允许数据自动分布在所有节点上。 与 HDFS 一样,Cassandra 中的数据会跨节点复制以实现冗余并存储在内存中。 它使用键的哈希值在集群中的节点之间分配数据。
Cassandra 架构允许系统运行而不受单点故障的影响。 这意味着如果一个集群有一百个节点并且其中一个发生故障,那么集群仍然会运行。 另一方面,在 Hadoop 中,namenode 的失败会使整个系统失败。

Cassandra 架构提供了高可扩展性,因此集群甚至可以拥有数千个节点。 此外,您可以在不中断其操作的情况下将新节点添加到集群中。
除了我们上面讨论的功能外,Apache Cassandra 架构还支持多个数据中心,并支持跨数据中心的数据复制。
拓扑与设计
Cassandra 架构基于分布式系统架构。 最简单的 Cassandra 版本可以在一台机器上运行,并且可以很好地进行基本测试。 一个 Cassandra 实例称为节点。
Cassandra 提供水平可扩展性,您可以在其中添加多个节点作为集群的组件。 它适用于对等架构,其中每个节点都连接到其他每个节点。 每个 Cassandra 节点在没有主节点的情况下执行所有数据库操作和服务器客户端请求。
这种点对点分布式架构可确保单点故障不会导致整个系统出现故障。 Cassandra 中的集群可以相互通信以实现多种功能。 以下概念对于此类沟通至关重要:
闲话
Gossip 是一种 Cassandra 协议,其节点用于点对点通信。 它通知一个节点其他节点的状态。 每一秒,一个节点与最多三个其他节点执行八卦,每条八卦消息都遵循特定的格式和版本号,以保持通信效率。
种子
Cassandra 中的每个节点都配置一个种子列表,该列表是其他节点的列表。 种子节点除了在首次加入集群时引导节点之外没有任何其他用途。 引导后,节点在重新启动时不需要种子。 每个 Cassandra 数据中心最好使用两个或三个种子节点,并保持种子列表统一。
数据库结构
在 Cassandra 中,数据存储在表中,其中每个表都组织成行和列。 此外,Cassandra 中的表被分组在键空间中,例如客户数据表可以全部分组在一个键空间中,而业务事务表可以存储在另一个键空间中。

每个表都有一个主键,主键分为集群列和分区键。 请注意,聚类列是可选的。 Cassandra 使用分区键来索引数据。 具有公共分区键的所有行构成一个数据分区,是数据分区的基本单位。
Cassandra 中的分区
在 Cassandra 中,分区程序将分区键转换为令牌。 Cassandra 中有多个分区器选项,其中 Murmur3Partitioner 是默认设置。 每个令牌都被分配了一个介于 -2^63 到 +2^63-1 之间的整数值,这个范围的名称就是令牌范围。
每个 Cassandra 都拥有这个范围的一部分,它主要拥有与该范围相关的数据。 我们使用令牌在节点之间精确定位数据。
您可以用这个概念来理解所有权系统:如果集群只有一个节点,那么该节点将拥有完整的令牌范围。 随着更多节点的添加,令牌范围所有权将相应地拆分。
虚拟节点
Cassandra 通过使用虚拟节点(也称为 Vnode)简化了令牌计算和分配挑战。
它将集群划分为多个虚拟节点以分配令牌,每个物理节点都获得相同数量的 Vnode。 节点拥有的默认 Vnode 数量为 256。您可以使用 num_tokens 属性进行设置。 当您将新节点添加到集群时,令牌分配算法将使用 Vnode 分配所需的令牌。
复制
Cassandra 使用复制因子复制存在于每个键空间中的数据。 数据的一个主要副本保留在令牌所有者节点中,而其余的则由 Cassandra 通过其副本放置策略放置在特定节点上。 请注意,所有副本对于大多数数据库操作都具有同等重要性。
有两个设置会影响 Cassandra 中的副本放置,它们是 snitch 和复制策略。 Snitch 确定节点所属的数据中心和机架。 他们负责通知 Cassandra 有关保持高效的拓扑。
复制策略设置在 keyspace 级别,有两个:NetworkTopologyStrategy 和 simple strategy。 前者是机架和数据中心感知的,而后者不是。
CAP定理
每个分布式系统都基于 CAP 定理工作。 根据这个定理,任何分布式系统都可以正确地提供一致性、可用性和分区容错这三个属性中的任何两个。
在 Cassandra 中,您可以在可用性和一致性之间进行选择。 这意味着数据可以高度一致但可用性较低,也可以高度可用但一致性较低。
请求特定数量的确认的概念称为可调一致性,您可以在单个查询级别应用它。
写过程
在这个过程中,数据被写入磁盘上的评论日志,然后根据哈希值发送到负责节点。
之后,节点将数据写入名为 memtable 的内存表中,从该表中将数据写入内存中的“sstable”。 接下来,它会更新为实际表。
如果责任节点由于某种原因关闭,数据将被写入另一个节点。
了解有关 Cassandra 架构的更多信息
了解 Apache Cassandra 架构将帮助您了解此解决方案的工作原理。 到现在为止,您也知道为什么 Cassandra 在竞争中脱颖而出以及为什么它如此受欢迎。
如果您有兴趣了解有关数据库的更多信息,可以查看以下资源:
用于数据科学的 SQL:为什么选择 SQL,优点和命令列表

20 个最常见的 SQL 面试问题和答案 [针对应届生]
带证书的 SQL 免费在线课程 [2021]
另一方面,如果您正在寻找个性化的学习体验,我们建议您参加数据科学课程。 在 upGrad,我们提供数据科学 PG 文凭和数据科学理学硕士。 这些课程将教您成为数据科学专业人士所需的所有技能。
结论
如果您有兴趣了解有关大数据计划的更多信息,请查看我们的大数据软件开发专业化 PG 文凭计划,该计划专为在职专业人士设计,提供 7 多个案例研究和项目,涵盖 14 种编程语言和工具,实用的手-在研讨会上,超过 400 小时的严格学习和顶级公司的就业帮助。
在 upGrad 查看我们的其他软件工程课程。