Cassandra Archi结构与复制因子
Cassandra 旨在处理 大数据运用. Cassandra的主要特点是将数据存储在多个节点上,没有单点故障。
出现这种现象的原因 Cassandra的架构是硬件故障可能随时发生。任何节点都可能停机。如果发生故障,可以使用存储在另一个节点的数据。因此, Cassandra 采用分布式架构设计。
Cassandra 采用点对点分布式架构将数据存储在不同的节点上。
所有节点使用以下方式相互交换信息 Gossip 协议八卦是一种礼仪 Cassandra 节点可以通过它相互进行通信。
组件 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 的图形表示:
网络拓扑策略 Cassandra
网络拓扑策略 用于拥有两个以上数据中心的情况。在 NetworkTopologyStrategy 中,每个数据中心分别设置副本。NetworkTopologyStrategy 将副本按环中的顺时针方向放置,直到到达另一个机架中的第一个节点。此策略尝试将副本放置在同一个数据中心的不同机架上。
这是因为有时机架可能会发生故障或问题。然后其他节点上的副本可以提供数据。
以下是网络拓扑策略的图形表示:
填写 Opera在 Cassandra
协调器向副本发送写入请求。如果所有副本都已启动,则无论其一致性级别如何,它们都将收到写入请求。
一致性级别 确定有多少个节点将回复成功确认。
如果数据成功写入提交日志,节点将回复成功确认,并且 内存表。
例如,在单个数据中心中,副本数为 3,则 3 个副本将接收写入请求。如果一致性级别为 1,则只有一个副本将回复成功确认,其余两个副本将保持休眠状态。
假设剩下的两个副本由于节点宕机或其他问题丢失数据, Cassandra 将通过内置修复机制使行保持一致 Cassandra.
这里解释了写入过程是如何发生的 Cassandra,
- 当写入请求到达节点时,首先,它会记录提交日志。
- 然后 Cassandra 将数据写入 mem-table。每次写入请求时写入 mem-table 的数据也会分别写入 commit log。Mem-table 是内存中临时存储的数据,而 Commit log 则记录事务记录以供备份。
- 当mem-table满了的时候,数据就会刷新到SSTable数据文件中。
阅读 Opera在 Cassandra
协调器向副本发送三种类型的读取请求。
- 直接请求
- 摘要请求
- 读取维修请求
协调器向其中一个副本发送直接请求,之后向一致性级别指定数量的副本发送摘要请求,并检查返回的数据是否为更新的数据。
之后,协调器向所有剩余副本发送摘要请求。如果任何节点给出过期值,后台读取修复请求将更新该数据。此过程称为读取修复机制。
总结
- 本教程讲解了 Cassandra 内部架构,以及如何 Cassandra 在不同阶段复制、写入和读取数据。
- 另外,这里解释了如何 Cassandra 在整个过程中保持一致性。
- 组件 Cassandra Archi结构:节点、数据中心、 Cluster、提交日志、内存表、SSTable
- 一个复制因子意味着只有一个数据副本,而三个复制因子意味着在三个不同的节点上有三个数据副本。
- 当您只有一个数据中心时,使用 SimpleStrategy。
- 当您拥有两个以上的数据中心时,使用 NetworkTopologyStrategy。