📜  Apache Cassandra 的架构

📅  最后修改于: 2021-09-09 10:53:54             🧑  作者: Mango

Avinash Lakshman 和 Prashant Malik 最初在 Facebook 开发了 Cassandra,以支持 Facebook 收件箱搜索功能。 Facebook 于 2008 年 7 月发布了 Cassandra 作为谷歌代码的开源项目。它于 2009 年 3 月成为 Apache 孵化器项目。它于 2010 年 2 月 17 日成为顶级项目之一。在互联网革命、移动设备和电子商务的推动下,现代应用程序已经超越了关系数据库。出于必要,新一代数据库应运而生,以应对大规模、全球分布的数据管理挑战。

Cassandra 为一些世界上最知名的品牌提供在线服务和移动后端支持,包括 Apple、Netflix 和 Facebook。

Apache Cassandra 的架构
在本节中,我们将描述 Apache Cassandra 的以下组件。
基本术语:

Node
Data center
Cluster

操作:

Read Operation
Write Operation

存储引擎:

CommitLog
Memtables
SSTables
Data Replication Strategies

让我们一一讨论。

基本术语:

  1. 节点:
    Node 是 Apache Cassandra 中的基本组件。它是实际存储数据的地方。例如:如图所示,IP 地址为 10.0.0.7 的节点包含数据(包含一个或多个表的键空间)。

  1. 图 –节点
  2. 数据中心:
    数据中心是节点的集合。
    例如:
DC – N1 + N2 + N3 …. 
DC: Data Center
N1: Node 1
N2: Node 2
N3: Node 3 
  1. 簇:
    它是许多数据中心的集合。
    例如:
C = DC1 + DC2 + DC3….
C: Cluster
DC1: Data Center 1
DC2: Data Center 2
DC3: Data Center 3 

  1. 图 –节点、数据中心、集群

操作:

  1. 读操作:
    在读取操作中,协调器可以向副本发送三种类型的读取请求。接受写入请求的节点称为该特定操作的协调器。
    • 步骤 1:直接请求:
      在此操作中,协调器节点将读取请求发送到其中一个副本。
    • 第 2 步:摘要请求:
      在此操作中,协调器将联系由一致性级别指定的副本。例如:一致性二;它只是意味着数据中心中的任何两个节点都会确认。
    • 第 3 步:阅读修复请求:
      如果存在节点间数据不一致的任何情况,则发起后台读取修复请求,以确保最新数据在节点间可用。
  2. 写操作:
    • 步骤1:
      在写入操作中,一旦我们收到请求,它就会首先转储到提交日志中以确保数据被保存。
    • 第2步:
      将数据插入表中,该表也写入 MemTable 中,该表保存数据直到数据填满。
    • 第 3 步:
      如果 MemTable 达到其阈值,则数据将刷新到 SS 表。

  • 图 – Cassandra 中的写操作

存储引擎:

  1. 提交日志:
    提交日志是写入磁盘或 memTable 时的第一个入口点。在 apache Cassandra 中提交日志的目的是在数据节点关闭时解决服务器同步问题。
  2. 内存表:
    在将数据写入 Commit log 之后,然后将数据写入 Mem-table。数据暂时写入Mem-table。
  3. SS表:
    一旦 Mem-table 达到某个阈值,则数据将刷新到 SSTable 磁盘文件。

数据复制策略:
基本上它用于备份以确保没有单点故障。在这个策略中,Cassandra 使用复制来实现高可用性和持久性。每个数据项都在 N 台主机上复制,其中 N 是“每个实例”配置的复制因子。

有两种类型的复制策略:简单策略和网络拓扑策略。这些解释如下。

  1. 简单策略:
    在此策略中,它允许定义单个整数 RF(replication_factor)。它确定应包含每行副本的节点数。例如,如果 replication_factor 是 2,那么两个不同的节点应该存储每一行的副本。它对所有节点一视同仁,忽略任何配置的数据中心或机架。

    简单策略的 CQL(Cassandra 查询语言)查询。使用 CREATE KEYSPACE 语句创建密钥空间:

create_keyspace_statement ::=  
      CREATE KEYSPACE [ IF NOT EXISTS ] keyspace_name 
       WITH options 
  1. 例如:

CREATE KEYSPACE User_data
    WITH replication = {'class': 'SimpleStrategy', 
                        'replication_factor' : 2}; 
  1. 要检查密钥空间架构,请使用以下 CQl 查询。

DESCRIBE KEYSPACE User_data
  1. 简单策略的图形表示。

  1. 图 –简单策略
  2. 网络拓扑策略:
    在此策略中,它允许为集群中的每个数据中心指定一个复制因子。即使您的集群仅使用一个数据中心。此策略应优先于 SimpleStrategy,以便以后更轻松地向集群添加新的物理或虚拟数据中心。

    网络拓扑策略的 CQL(Cassandra 查询语言)查询。

CREATE KEYSPACE User_data
    WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1' : 2, 'DC2' : 3}
    AND durable_writes = false; 
  1. 要检查密钥空间架构,请使用以下 CQl 查询。
DESCRIBE KEYSPACE User_data
  1. 网络拓扑策略的图示。

  1. 图 –网络拓扑策略

Cassandra 中的表结构:

USE User_data;

CREATE TABLE User_table (
     User_id int,
     User_name text,
     User_add text,
     User_phone text,
     PRIMARY KEY (User_id)
);

Insert into User_data (User_id, User_name, User_add, User_phone ) 
                    VALUES(1000, ‘Ashish’, ‘Noida’, ‘8077178539’);
Insert into User_data (User_id, User_name, User_add, User_phone ) 
                        VALUES(1001, ‘Ashish Gupta’, ‘Bangalore’);
Insert into User_data (User_id, User_name, User_add, User_phone ) 
                                              VALUES(1002, ‘Abi’); 

输出:

图 –表结构

Apache Cassandra 的应用:
Cassandra 擅长的一些应用程序用例包括:

  • 实时大数据工作负载
  • 时间序列数据管理
  • 高速设备数据消费与分析
  • 媒体流管理(例如,音乐、电影)
  • 社交媒体(即非结构化数据)输入和分析
  • 在线网络零售(例如,购物车、用户交易)
  • 实时数据分析
  • 在线游戏(例如,实时消息传递)
  • 利用 Web 服务的软件即服务 (SaaS) 应用程序
  • 在线门户(例如,医疗保健提供者/患者互动)
  • 大多数写入密集型系统