Cassandra中的集群、数据中心、机架和节点
Cassandra中的集群、数据中心、机架和节点
在本教程中,我们将仔细研究Cassandra的架构。我们将了解在分布式架构中数据存储的方式,并讨论基本的架构组件。
2. Cassandra概述
Apache Cassandra是一个NoSQL分布式数据库管理系统。Cassandra的主要优势是它能够在普通服务器上处理大量结构化数据。此外,它提供高可用性并且没有单点故障。 Cassandra通过使用环形架构来实现这一点,其中最小的逻辑单元是节点。它使用数据分区来优化查询。
每条数据都有一个分区键。每一行的分区键都会进行哈希。因此,我们将为每条数据获得一个唯一的令牌。每个节点都有一个分配的令牌范围。因此,具有相同令牌的数据将存储在同一个节点上。节点的环形架构如下所示:
3. Cassandra组件
3.1. 节点
节点是Cassandra的基本基础设施组件。它是一台完全功能的机器,通过高内部网络与其他节点在集群中连接。
这个网络的名称是_八卦协议_。为了澄清,这台机器可以是物理服务器或EC2实例,或者是虚拟机。所有节点都以环形网络拓扑结构组织。重要的是,每个节点都是独立的,并且在环中具有相同的角色。Cassandra以_对等结构_排列节点。节点包含实际的数据。
集群中的每个节点都可以接受读写请求。因此,数据在集群中的实际位置并不重要。我们总是能得到数据的最新版本。
3.2. 虚拟节点
Cassandra的较新版本使用虚拟节点或简称_vnodes_。虚拟节点是服务器内部的数据存储层。
默认情况下,每个服务器有256个虚拟节点。正如我们在前一段中讨论的,每个节点都有一个分配的令牌范围。每个虚拟节点使用它们所属节点的令牌子范围。
这些虚拟节点为系统提供了更大的灵活性。因此,当我们需要时,Cassandra更容易向集群添加新节点。当我们的数据在节点之间不均匀地分配令牌时,我们可以通过扩展虚拟节点到更负载的节点来轻松扩展存储容量。
3.4. 服务器
当我们使用术语_服务器_时,我们的意思是 安装了Cassandra软件的机器。 每个节点都有一个Cassandra的单一实例,从技术上讲,这是一个服务器。正如我们前面所说,每个Cassandra实例已经发展到包含256个虚拟节点。Cassandra服务器运行核心进程。例如,像在节点周围传播副本或路由请求这样的进程。
3.5. 机架
Cassandra机架是环内节点的逻辑分组。 换句话说,机架是服务器的集合。数据库使用机架以确保副本在不同的逻辑分组中分布。因此,它可以不仅仅发送操作到一个节点。多个节点,每个节点在不同的机架上,可以提供更大的容错性和可用性。
3.6. 数据中心
数据中心是机架的逻辑集合。 数据中心应该至少包含一个机架。我们可以这样说,Cassandra数据中心是为复制目的在集群内配置的一组节点。因此,它有助于减少延迟,防止事务受到其他工作负载和相关影响的影响。更重要的是,复制因子也可以设置为写入多个数据中心。因此,Cassandra可以提供额外的架构设计和组织的灵活性。
3.7. 集群
集群是包含一个或多个数据中心的组件。 它是数据库中最外层的存储容器。一个数据库包含一个或多个集群。Cassandra集群的元素层次结构是:
首先,我们有由数据中心组成的集群。在数据中心内部,我们有默认包含256个虚拟节点的节点。
4. 数据复制
现在,我们知道了Cassandra的基本组件。让我们谈谈Cassandra如何管理其结构中的数据。一些系统不允许数据丢失或数据传输中断。解决方案是在问题发生时提供备份。例如,可能是硬件问题,或者在数据处理期间链接随时可能断开。Cassandra在多个节点上存储数据副本以确保可靠性和容错性。
5.1. 复制因子
我们可以通过复制因子和复制策略来确定副本的数量及其位置。复制因子是集群中副本的总数。当我们将此因子设置为一,这意味着在集群中每个行只有一个副本,以此类推。我们可以在数据中心级别和机架级别设置此因子。
5.1. 复制策略
复制策略控制副本的选择方式。副本的重要性是相同的。Cassandra有两种策略来确定哪些节点包含复制的数据。第一种叫做_SimpleStrategy_,它不知道节点的逻辑划分用于数据中心和机架。第二种是_NetworkTopologyStrategy_,它更复杂,既知道机架也知道数据中心。我们可以使用_NetworkTopologyStrategy_定义在不同的数据中心放置多少副本。此外,它还试图避免两个副本被放置在同一个机架上的情况。
5. 结论
本教程介绍了Cassandra架构的基本组件。我们涵盖了确保其高可用性和分区容错性的关键概念。我们还讨论了数据分区和数据复制。