当复制因子==群集大小时,Cassandra分区如何工作? 背景:

当复制因子==群集大小时,Cassandra分区如何工作? 背景:,cassandra,replication,partitioning,distributed-system,Cassandra,Replication,Partitioning,Distributed System,我对卡桑德拉还不熟悉,但我仍在努力将我的思想集中在内部工作上 我正在考虑在一个只有有限数量节点(少于10个,通常是3个)的应用程序中使用Cassandra。理想情况下,集群中的每个节点都有所有应用程序数据的完整副本。因此,我正在考虑将复制因子设置为集群大小。当添加其他节点时,我会更改键空间以增加复制因子设置(nodetool repair以确保它获得必要的数据) 我将使用NetworkTopologyStrategy进行复制,以利用有关数据中心的知识 在这种情况下,分区实际上是如何工作的?我在C

我对卡桑德拉还不熟悉,但我仍在努力将我的思想集中在内部工作上

我正在考虑在一个只有有限数量节点(少于10个,通常是3个)的应用程序中使用Cassandra。理想情况下,集群中的每个节点都有所有应用程序数据的完整副本。因此,我正在考虑将复制因子设置为集群大小。当添加其他节点时,我会更改键空间以增加复制因子设置(nodetool repair以确保它获得必要的数据)

我将使用NetworkTopologyStrategy进行复制,以利用有关数据中心的知识

在这种情况下,分区实际上是如何工作的?我在Cassandra中读过关于节点和分区键组合形成环的内容。如果我的所有节点都“负责”每段数据,而不考虑分区器计算的哈希值,那么我是否只有一个分区键环

这种卡桑德拉部署会有巨大的失败吗?我猜,当数据传播到每个节点时,会有很多异步复制在后台进行,但这是设计目标之一,所以我同意

读取的一致性级别通常可能是“一”或“本地”

写操作的一致性级别通常为“2”

要回答的实际问题:
  • 除了一个集群的明显情况外,复制因子==集群大小是一种常见的(甚至是合理的)部署策略吗
  • 我是否真的有一个一个分区的环,其中分区程序生成的所有可能的值都指向一个分区
  • 每个节点是否被视为对每一行数据“负责”
  • 如果我使用“一”的写入一致性,Cassandra是否总是将数据写入客户端所联系的节点
  • 这个策略还有其他我不知道的缺点吗
  • 我是否真的有一个分区环,其中包含所有可能的值 由分区程序生成,是否转到一个分区

    每个节点是否被视为对每一行数据“负责”

    如果我的所有节点都“负责”每一条数据,不管 对于分区器计算的哈希值,我是否只有一个环 使用一个分区密钥

    不完全是这样,C*节点仍然具有令牌范围,并且C*仍然将主副本分配给“负责”节点。但所有节点也将有一个RF=N的副本(其中N是节点数)。因此,本质上,其含义与您所描述的相同

    这种卡桑德拉部署会有巨大的失败吗? 这个策略还有其他我不知道的缺点吗

    我想你可能比一般人更容易受到不一致数据的影响,所以使用C*的反熵机制来应对这种情况(修复、读取修复、暗示切换)

    一致性级别的quorum或all将开始变得昂贵,但我发现您不打算使用它们

    复制因子==群集大小是常见的(甚至是合理的) 除了一个集群的明显情况之外,还有什么部署策略

    这并不常见,我想您正在寻找超高可用性,并且所有数据都可以放在一个盒子中。我想我从未见过射频>5的c*部署。远宽射频=3

    如果我使用“一”的写一致性,卡桑德拉总是这样吗 是否将数据写入客户端联系的节点


    这取决于驱动程序的负载平衡策略。通常我们会选择令牌感知策略(假设您使用的是一个Datastax驱动程序),在这种情况下,请求会自动路由到主副本。您可以在您的案例中使用循环,并具有相同的效果。

    主要的问题是,在添加节点时,协调器级别的写入成本会增加。我所看到的最大写入副本数约为8个(其他数据中心为5个,本地副本为3个)

    实际上,这意味着在执行大型或批处理写入(大于1mb)或较低的每节点写入TPS时,稳定性会降低

    主要的优势是你可以做很多通常很糟糕而且不可能做的事情。要使用二级索引吗?可能会工作得相当好(假设基数和分区大小不会成为瓶颈)。想要添加一个自定义UDF,该自定义UDF可以执行GroupBy操作,或者在查询中使用非常大的查询,这可能会奏效

    正如@Phact所提到的,这不是一种常见的使用模式,我主要看到它与DSE搜索一起用于低写吞吐量的用例,这些用例需要Solr的“单节点”功能,但是对于那些使用纯Cassandra的相同用例,您将在读取端获得一些好处,并且能够执行在更分布式的集群中通常不可能完成的昂贵查询