Cassandra Archi结构与复制因子

Cassandra 旨在处理 大数据运用. Cassandra的主要特点是将数据存储在多个节点上,没有单点故障。

出现这种现象的原因 Cassandra的架构是硬件故障可能随时发生。任何节点都可能停机。如果发生故障,可以使用存储在另一个节点的数据。因此, Cassandra 采用分布式架构设计。

Cassandra 采用点对点分布式架构将数据存储在不同的节点上。

所有节点使用以下方式相互交换信息 Gossip 协议八卦是一种礼仪 Cassandra 节点可以通过它相互进行通信。

组件 Cassandra Archi质地

有以下组件 Cassandra Archi結構:

Cassandra Archi质地
Cassandra Archi结构图

Node

节点是存储数据的地方。它是网络的基本组成部分 Cassandra.

数据中心

一组节点的集合称为数据中心。多个节点被归类为一个数据中心。

Cluster

集群是众多数据中心的集合。

提交日志

每个写操作都会写入 Commit Log。Commit Log 用于崩溃恢复。

内存表

数据写入Commit log后,会写入Mem-table,数据是临时写入Mem-table的。

SS表

当Mem-table达到某个阈值时,数据会被刷新到SSTable磁盘文件中。

数据复制在 Cassandra

由于在数据处理过程中,硬件问题或链路随时可能出现故障,因此需要一种解决方案来在问题发生时提供备份。因此,数据被复制以确保没有单点故障。

Cassandra 根据这两个因素将数据副本放置在不同的节点上。

  • 下一个副本的放置位置取决于 复制策略.
  • 虽然放置在不同节点上的副本总数取决于 复制因子.

一个复制因子意味着只有一个数据副本,而三个复制因子意味着在三个不同的节点上有三个数据副本。

为了确保没有单点故障, 复制因子必须为三。

有两种复制策略 Cassandra.

SimpleStrategy 中 Cassandra

简单策略 适用于只有一个数据中心的情况。SimpleStrategy 将第一个副本放置在分区器选择的节点上。之后,其余副本按顺时针方向放置在节点环中。

以下是 SimpleStrategy 的图形表示:

SimpleStrategy 中 Cassandra
SimpleStrategy 中 Cassandra

网络拓扑策略 Cassandra

网络拓扑策略 用于拥有两个以上数据中心的情况。在 NetworkTopologyStrategy 中,每个数据中心分别设置副本。NetworkTopologyStrategy 将副本按环中的顺时针方向放置,直到到达另一个机架中的第一个节点。此策略尝试将副本放置在同一个数据中心的不同机架上。

这是因为有时机架可能会发生故障或问题。然后其他节点上的副本可以提供数据。

以下是网络拓扑策略的图形表示:

网络拓扑策略 Cassandra
网络拓扑策略 Cassandra

填写 Opera在 Cassandra

协调器向副本发送写入请求。如果所有副本都已启动,则无论其一致性级别如何,它们都将收到写入请求。

一致性级别 确定有多少个节点将回复成功确认。

如果数据成功写入提交日志,节点将回复成功确认,并且 内存表。

例如,在单个数据中心中,副本数为 3,则 3 个副本将接收写入请求。如果一致性级别为 1,则只有一个副本将回复成功确认,其余两个副本将保持休眠状态。

假设剩下的两个副本由于节点宕机或其他问题丢失数据, Cassandra 将通过内置修复机制使行保持一致 Cassandra.

这里解释了写入过程是如何发生的 Cassandra,

  1. 当写入请求到达节点时,首先,它会记录提交日志。
  2. 然后 Cassandra 将数据写入 mem-table。每次写入请求时写入 mem-table 的数据也会分别写入 commit log。Mem-table 是内存中临时存储的数据,而 Commit log 则记录事务记录以供备份。
  3. 当mem-table满了的时候,数据就会刷新到SSTable数据文件中。
填写 Opera在 Cassandra
填写 Opera在 Cassandra

阅读 Opera在 Cassandra

协调器向副本发送三种类型的读取请求。

  1. 直接请求
  2. 摘要请求
  3. 读取维修请求

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

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

总结

  • 本教程讲解了 Cassandra 内部架构,以及如何 Cassandra 在不同阶段复制、写入和读取数据。
  • 另外,这里解释了如何 Cassandra 在整个过程中保持一致性。
  • 组件 Cassandra Archi结构:节点、数据中心、 Cluster、提交日志、内存表、SSTable
  • 一个复制因子意味着只有一个数据副本,而三个复制因子意味着在三个不同的节点上有三个数据副本。
  • 当您只有一个数据中心时,使用 SimpleStrategy。
  • 当您拥有两个以上的数据中心时,使用 NetworkTopologyStrategy。