【云小课】【第13课】初识GaussDB(for Cassandra)基础架构

数据库的小云妹 发表于 2020/07/23 09:37:55 2020/07/23
【摘要】 架构原理Cassandra旨在处理多个节点之间的大数据工作负载且无单节点故障。Cassandra通过在同构节点之间采用p2p分布式系统来解决故障问题,其中数据分布在集群中的所有节点上。通过点对点Gossip通信协议,集群中的每个节点与其他节点频繁交换状态信息。每个节点上都有一个顺序写入的commit log用来记录写入操作,以确保数据实现持久化。然后将数据编入索引并写入内存结构,称为内存表(...

云小课必用.png

架构原理

Cassandra旨在处理多个节点之间的大数据工作负载且无单节点故障。

Cassandra通过在同构节点之间采用p2p分布式系统来解决故障问题,其中数据分布在集群中的所有节点上。通过点对点Gossip通信协议,集群中的每个节点与其他节点频繁交换状态信息。每个节点上都有一个顺序写入的commit log用来记录写入操作,以确保数据实现持久化。然后将数据编入索引并写入内存结构,称为内存表(memtable),类似于回写缓存。当内存结构写满数据时,则把数据存储到SSTable数据文件中的磁盘。所有的写入操作会在整个集群中自动分区和备份。Cassandra通过一个称为压缩(compaction)的过程定期整合SSTable,丢弃标记为删除的旧数据。为确保整个集群中所有数据的一致性,采用了各种修复机制。

Cassandra是一个分区式行存储数据库,行被组织成具有所需主键的表。Cassandra架构允许任何授权用户连接到任一数据中心的任一节点,并使用CQL语言访问数据。为了方便使用,CQL使用与SQL类似的语法并与数据表一起使用。开发者可以通过cqlsh访问CQL。通常,对于由不同表组成的应用程序,一个集群对应一个密钥空间。

客户端读写请求可以发送到集群中的任一节点。当客户端连接到有请求的节点时,该节点用作该客户端的协调器(coordinator)。作为客户端应用程序和被请求数据所在的节点之间的代理,协调器根据集群的配置确定环(ring)中的哪些节点应该获得请求。

1.png

关键组件

●  Gossip

Gossip是用于发现和共享关于Cassandra集群中其他节点的位置和状态信息的p2p通信协议。每个节点将Gossip信息持久化到本地,以便在节点重新启动时使用该信息。

  Partitioner分区器

Partitioner分区器用于确定哪个节点将接收到数据的第一个副本,以及如何在集群中的其他节点上分发其他副本。每一行数据都由主键唯一标识,该主键可以与其分区键相同,但也可以包括其他集群列。分区器是一个散列函数,从一个行的主键派生出一个令牌(token)。分区器使用令牌值来确定集群中的哪些节点接收该行的副本。

Murmur3 Partitioner是新Cassandra集群的默认分区策略,在多数情况下,也是新集群的正确选择。

您必须设置分区器并为每个节点分配一个num _ tokens值。令牌数量取决于系统的硬件能力。如果不使用虚拟节点(vnode),使用initial _ token设置即可。

  复制因子

跨集群的副本总数。复制因子1意味着一个节点上的每一行只有一个副本。复制因子2表示每行有两个副本,每个副本在不同的节点上。没有主副本,所有副本同样重要。您可以为数据中心设置复制因子的个数。一般情况下,设置复制策略大于1,但不要超过集群中的节点数量。

  副本放置策略

Cassandra将数据的副本存储在多个节点上,以保证可靠性和容错性。复制策略决定将副本放置在哪些节点上。

推荐使用NetworkTopologyStrategy,以便将来扩展到多个数据中心。

创建密钥空间(keyspace)时,必须确定副本放置策略和需要的副本数量。

  Snitch

Snitch将机器组划分到数据中心和机架(拓扑),复制策略根据拓扑结构放置副本。

创建集群时必须配置snitch。所有的snitch都使用一个动态snitch层用来监控性能并选择最佳的副本读取数据。默认情况,snitch为开启状态,推荐在大多数部署中使用。您需要在Cassandra.yaml配置文件中配置各节点的动态snitch阈值。

默认情况下,SimpleSnitch不识别数据中心或机架信息,用于单个数据中心部署或公有云中的单个区域。对于生产环境,推荐使用GossipingPropertyFileSnitch,它定义了节点的数据中心和机架的信息,并通过gossip将此信息传播到其他节点。

  cassandra.yaml配置文件

用于设置集群的初始化属性、表的缓存参数、调优和资源利用率、超时设置、客户端连接、备份和安全性的主要配置文件。

  系统键空间表属性

可以以编程方式或使用客户端应用程序(如CQL)在每个键空间或表基础上设置存储配置属性。





【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区),文章链接,文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:cloudbbs@huaweicloud.com进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。