cassandra nosql数据库中的节点,集群和数据中心之间有什么区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cassandra nosql数据库中的节点,集群和数据中心之间有什么区别?相关的知识,希望对你有一定的参考价值。

我正在尝试使用datastax ops center在cassandra nosql数据库中复制学校项目中的数据。根据我的阅读,有三个关键字:集群,节点和数据中心,根据我的理解,节点中的数据可以复制到另一个集群中的另一个节点中。并且包含相同(重复)数据的所有节点组成数据中心。是对的吗?

如果不是,有什么区别?

答案

Cassandra中元素的层次结构是:

  • 簇 数据中心 架(S) 服务器(S) 节点(更准确地说,是一个vnode)

群集是数据中心的集合。

taken for a成立。

Rack是服务器的集合。

默认情况下,服务器包含256个虚拟节点(或vnode)。

vnode是服务器中的数据存储层。

注意:服务器是Cassandra软件。服务器安装在计算机上,其中计算机是物理服务器,EC2实例或类似计算机。

现在专门解决你的问题。

单个数据单元称为分区。是的,分区跨多个节点进行复制。分区的每个副本称为副本。

在多数据中心群集中,复制是按数据中心进行的。例如,如果您在旧金山有一个名为dc-sf的数据中心,而在纽约有另一个名为dc-ny的数据中心,那么您可以控制每个数据中心的副本数量。

例如,您可以将dc-sf设置为具有3个副本,并将dc-ny设置为具有2个副本。

这些数字称为复制因子。你会特别说dc-sf的复制因子为3,而dc-ny的复制因子为2.简单来说,dc-sf将有3个数据副本分布在三个vnode上,而dc-sf会有2个数据的副本分布在两个vnode上。

虽然默认情况下每个服务器都有256个vnode,但Cassandra足够聪明,可以选择存在于不同物理服务器上的vnode。

istic总结enhanced:

  • 数据跨多个虚拟节点复制(默认情况下,每个服务器包含256个vnode)
  • 每个数据副本称为副本
  • 数据单元称为分区
  • 每个数据中心控制复制
另一答案

节点是运行Cassandra的单个机器。保存类似数据的节点集合被分组在所谓的“环”或集群中。

有时,如果您有大量数据,或者您在不同地理区域提供数据,则有必要将群集中的节点分组到不同的数据中心。一个很好的用例是电子商务网站,它可能在东海岸和西海岸有许多常客。这样,您在东海岸的客户就可以连接到您的东海岸DC(以获得更快的性能),但最终可以访问与西海岸客户相同的数据集(两个DC位于同一群集中)。

有关这方面的更多信息,请访问:About Apache Cassandra- How does Cassandra work?

并且包含相同(重复)数据的所有节点组成数据中心。是对的吗?

关闭,但不一定。您拥有的数据重复级别由复制因子决定,复制因子是基于每个键空间设置的。例如,假设我的单个DC中有3个节点,所有节点都存储了600GB的产品数据。我的products键空间定义可能如下所示:

CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '3'};

这将确保我的产品数据同等地复制到所有3个节点。我的总数据集的大小为600GB,在所有3个节点上都重复。

但是,让我们说我们正在推出一个新的,相当大的产品线,我估计我们将有另外300GB的数据,这可能会开始推动我们硬盘的最大容量。如果我们现在无法负担升级所有硬盘的费用,我可以改变复制因素,如下所示:

CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '2'};

这将创建我们所有数据的2个副本,并将其存储在我们当前的3个节点的集群中。我们的数据集的大小现在是900GB,但由于它只有两个副本(每个节点基本上负责2/3的数据),我们的磁盘大小仍然是600GB。这里的缺点是(假设我在ONE的一致性级别读写)我只能承受1个节点的损失。虽然有3个节点和3个RF(再次读取和写入一致性ONE),我可能会丢失2个节点并仍然提供请求。

编辑20181128

当我发出网络请求时,我是在针对服务器进行的吗?还是节点?或者我对服务器提出请求然后路由它并从节点或其他东西读取?

所以真正的快速解释:server == node

就针对集群中的节点发出请求而言,该行为实际上取决于应用程序端的驱动程序。实际上,驱动程序维护当前网络拓扑的副本,因为它读取类似于节点的群集八卦。

在应用程序端,您可以设置负载平衡策略。具体来说,TokenAwareLoadBalancingPolicy类将检查每个请求的分区键,找出哪些节点有数据,并直接在那里发送请求。

对于其他负载平衡策略,或者对于无法确定单个分区密钥的查询,请求将发送到单个节点。该节点将充当“协调者”。此选定节点将处理对负责它们的节点的请求路由,以及任何结果集的编译/返回。

另一答案

Node:

存储整个数据库某些部分的计算机。这可能包括从另一个节点复制的数据以及它自己的数据。它负责的数据取决于它的令牌范围,以及保存数据的键空间的复制策略。

Datacenter:

节点的逻辑分组,可以与其他节点分开。常见的用例是AWS-EAST与AWS-WEST。复制NetworkTopologyStrategy用于指定任何给定数据中心中应存在的整个键空间的副本数。这就是Cassandra用户实现跨DC复制的方式。此外,它们是一致性级别策略,仅需要在协调器的数据中心内进行确认(LOCAL_*

Cluster

数据库中所有计算机的总和,包括所有数据中心。没有跨群集复制。

以上是关于cassandra nosql数据库中的节点,集群和数据中心之间有什么区别?的主要内容,如果未能解决你的问题,请参考以下文章

开源Nosql数据库Cassandra3.0实战-集群部署与插件使用

数据源管理 | 分布式NoSQL系统,Cassandra集群管理

Cassandra内部架构

如何加快 cassandra 集群中的节点加入过程

2 节点 Cassandra 集群中的故障转移和复制

Apache Cassandra随笔之多节点跨数据中心集群配置以及日常操作