Cassandra 架构

🌙
手机阅读
本文目录结构

Cassandra 的设计目的是处理跨多个节点的大数据工作负载,而没有任何单点故障。Cassandra 在其节点之间具有对等分布式系统,并且数据分布在集群中的所有节点之间。

  • 集群中的所有节点都扮演相同的角色。 每个节点是独立的,并且同时互连到其他节点。

  • 集群中的每个节点都可以接受读取和写入请求,无论数据实际位于集群中的何处。

  • 当节点关闭时,可以从网络中的其他节点提供读 / 写请求。

Cassandra 中的数据复制

在 Cassandra 中,集群中的一个或多个节点充当给定数据片段的副本。如果检测到一些节点以过期值响应,Cassandra 将向客户端返回最近的值。返回最新的值后,Cassandra 在后台执行读修复以更新失效值。

下图显示了 Cassandra 如何在集群中的节点之间使用数据复制,以确保没有单点故障的示意图。

数据复制

- Cassandra 在后台使用 Gossip 协议,允许节点相互通信并检测集群中的任何故障节点。

Cassandra 的组件

Cassandra 的关键组件如下:

  • 节点 - 它是存储数据的地方。

  • 数据中心 - 它是相关节点的集合。

  • 集群 - 集群是包含一个或多个数据中心的组件。

  • 提交日志 - 提交日志是 Cassandra 中的崩溃恢复机制。每个写操作都写入提交日志。

  • ****Mem- - mem- 表是存储器驻留的数据结构。提交日志后,数据将被写入 mem 表。有时,对于单列族,将有多个 mem 表。

  • SSTable - 它是一个磁盘文件,当其内容达到阈值时,数据从 mem 表中刷新。

  • 布隆过滤器 - 这些只是快速,非确定性的算法,用于测试元素是否是集合的成员。它是一种特殊的缓存。 每次查询后访问 Bloom 过滤器。

Cassandra 查询语言

用户可以使用 Cassandra 查询语言(CQL)通过其节点访问 Cassandra。CQL 将数据库(Keyspace)视为表的容器。 程序员使用 cqlsh:提示以使用 CQL 或单独的应用程序语言驱动程序。

客户端针对其读写操作访问任何节点。该节点(协调器)在客户端和保存数据的节点之间播放代理。

写操作

节点的每个写入活动都由写在节点中的提交日志捕获。稍后数据将被捕获并存储在存储器表中。每当内存表满时,数据将写入 SStable 数据文件。所有写入都会在整个集群中自动分区和复制。Cassandra 会定期整合 SSTables,丢弃不必要的数据。

读操作

在读操作,Cassandra 从 MEM- 表得到的值,并检查过滤器绽放找到保存所需数据的相应的 SSTable。


AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了