开发手册 欢迎您!
软件开发者资料库

Cassandra - Architecture

Cassandra Architecture - 从简介,架构和数据模型,安装,参考Api,Cassandra Cqlsh,Shell命令,创建Keyspace,Alter Keyspace,Drop Keyspace,创建表,Alter Table,Drop Table,Truncate Table等简单易懂的步骤学习Cassandra ,创建索引,删除索引,创建数据,更新数据,删除数据,批处理,选择子句,Cql数据类型,Cql集合,Cql用户定义的数据类型。

Cassandra的设计目标是跨多个节点处理大数据工作负载,而不会出现任何单点故障. Cassandra在其节点上具有点对点分布式系统,数据分布在集群中的所有节点之间.

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

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

  • 当节点出现故障时,可以从网络中的其他节点提供读/写请求.

Cassandra中的数据复制

在Cassandra中,集群中的一个或多个节点充当给定的副本一块数据.如果检测到某些节点响应了过时的值,Cassandra会将最新的值返回给客户端.返回最新值后,Cassandra在后台执行读取修复以更新失效值.

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

数据复制

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

Cassandra的组件

Cassandra的关键组成部分如下:

  • Node : 它是存储数据的地方.

  • 数据中心 : 它是相关节点的集合.

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

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

  • Mem-table :  mem-table是一种驻留在内存中的数据结构.提交日志后,数据将被写入mem-table.有时,对于单列族,会有多个内存表.

  • SSTable : 它是一个磁盘文件,当内容达到阈值时,数据从内存表中刷新.

  • Bloom filter : 这些只是用于测试元素是否是集合成员的快速,不确定的算法.它是一种特殊的缓存.每次查询后都会访问Bloom过滤器.

Cassandra查询语言

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

客户端接近任何节点进行读写操作.该节点(协调器)在客户端和保存数据的节点之间播放代理.

写入操作

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

读取操作

在读取操作期间,Cassandra从mem-table中获取值并检查bloom过滤以查找包含所需数据的相应SSTable.