一、简介

在本教程中,我们将仔细研究 Cassandra 的架构。我们将了解分布式架构中的数据存储,并将讨论基本架构组件。

2.卡桑德拉概述

Apache Cassandra是一个 NoSQL 分布式数据库管理系统。 Cassandra 的主要优点是它可以跨商用服务器处理大量结构化数据。此外,它还提供高可用性并且不提供单点故障。 Cassandra 通过使用环型架构来实现这一点,其中最小的逻辑单元是节点。它使用数据分区来优化查询。
每条数据都有一个分区键。每行的分区键都经过哈希处理。因此,我们将为每条数据获得一个唯一的标记。对于每个节点,都有指定的令牌范围。因此,具有相同令牌的数据存储在同一节点上。节点环型架构如下图所示:
apache cassandra 图 02

3.Cassandra组件

3.1.节点

节点是 Cassandra 的基本基础设施组件。 它是一台功能齐全的机器,通过高层内部网络与集群中的其他节点连接。
该网络的名称是 Gossip Protocol 。需要澄清的是,该机器可以是物理服务器或EC2实例,也可以是虚拟机。所有节点均采用环形网络拓扑结构。重要的是,每个节点都是独立的,并且在环中具有相同的角色。 Cassandra 以 点对点结构排列节点。 该节点包含实际数据。
集群中的每个节点都可以接受读写请求。因此,数据实际位于集群中的位置并不重要。我们将始终获得最新版本的数据。

3.2.虚拟节点

较新版本的 Cassandra 使用虚拟节点或简称为 vnode虚拟节点是服务器内的数据存储层。
默认情况下,每台服务器有 256 个虚拟节点。正如我们在上一段中讨论的,每个节点都分配了一系列令牌。每个虚拟节点都使用它们所属节点的令牌子范围。
这些虚拟节点为系统提供了更大的灵活性。因此,Cassandra 在需要时可以更轻松地将新节点添加到集群中。当我们的数据在节点之间分布不均匀时,我们可以通过将虚拟节点扩展到负载较多的节点来轻松扩展存储容量。

3.4.服务器

当我们使用术语 “服务器” 时,我们指的是 安装了 Cassandra 软件的计算机。 每个节点都有一个 Cassandra 实例,从技术上讲,它是一个服务器。正如我们之前所说,Cassandra 的每个实例已发展到包含 256 个虚拟节点。 Cassandra 服务器运行核心进程。例如,在节点周围传播副本或路由请求等过程。

3.5.架子

Cassandra 机架是环内节点的逻辑分组 。换句话说,机架是服务器的集合。数据库使用机架,以确保副本分布在不同的逻辑分组中。因此,它不仅可以将操作发送到一个节点。多个节点(每个节点位于单独的机架上)可以提供更高的容错能力和可用性。

3.6.数据中心

数据中心是一组逻辑机架。 数据中心应至少包含一个机架。我们可以说 Cassandra 数据中心是集群中出于复制目的而相关和配置的一组节点。因此,它有助于减少延迟,防止事务受到其他工作负载和相关影响的影响。此外,还可以设置复制因子以写入多个数据中心。因此,Cassandra 可以在架构设计和组织方面提供额外的灵活性。

3.7.簇

集群是包含一个或多个数据中心的组件。 它是数据库中最外层的存储容器。一个数据库包含一个或多个簇。 Cassandra 集群中元素的层次结构为:
簇2
首先,我们有由数据中心组成的集群。在数据中心内部,我们的节点默认包含 256 个虚拟节点。

4. 数据复制

现在,当我们了解 Cassandra 的基本组件时。我们来谈谈 Cassandra 如何围绕其结构管理数据。有些系统不允许数据丢失或数据传输中断。解决方案是在出现问题时提供备份。例如,可能是硬件问题,或者数据处理过程中随时可能出现链路故障。 Cassandra 将数据副本存储在多个节点上,以确保可靠性和容错能力。

5.1.复制因子

我们可以通过复制因子和复制策略来确定副本的数量及其位置。 复制因子是集群中的副本总数 。当我们将此因子设置为 1 时,意味着集群中每行仅存在一个副本,依此类推**。** 我们可以在数据中心级别和机架级别上设置此因子。

5.1.复制策略

复制策略控制如何选择副本 。副本的重要性是一样的。 Cassandra 有两种策略来确定哪些节点包含复制数据。第一个称为 SimpleStrategy, 它不知道数据中心和机架的节点逻辑划分。第二个是 NetworkTopologyStrategy 更复杂,并且既支持机架又支持数据中心。我们可以使用 NetworkTopologyStrategy 定义在不同数据中心放置多少个副本。此外,它试图避免两个副本放置在同一机架上的情况。

5. 结论

本教程介绍 Cassandra 架构的基本组件。我们介绍了该数据库的关键概念,以确保其高可用性和分区容错性。我们还讨论了数据分区和数据复制。