cassandra - 如果在 Apache Cassandra 中,数据中心和机架不直接与物理机架或数据中心相关,那么如何处理容错?

标签 cassandra datastax

我正在查看此处提供的文档:https://www.datastax.com/blog/2019/03/distributed-database-things-know-cassandra-datacenter-racks 。它说机架和数据中心是一个抽象概念,而不是硬映射到物理上的东西。我也遇到过这个:

A Cassandra rack is a logical grouping of Cassandra nodes within the ring. Cassandra uses racks so that it can ensure replicas are distributed among different logical groupings. As a result, operations are sent to not just one node, but multiple nodes, each on a separate rack, providing greater fault tolerance and availability.

我的问题是,如果它们没有复制到不同的物理节点/机架上,那么如果一台机器出现故障,那么所有逻辑“机架”、“数据中心”不是也会变得不可用吗?我可能会错过很多与此相关的信息,但话又说回来,在大量搜索后我没有得到太多清晰的图片。

最佳答案

你说得完全正确。 Cassandra 允许您指定逻辑数据中心和机架,它们应该与其对应的物理数据中心和机架相对应。

但是没有什么强制你这样做。您绝对可以选择在单个物理数据中心内创建多个逻辑数据中心。您可以使用单独的逻辑机架定义每个节点,这些逻辑机架很可能安装在一起。更复杂的是,所有节点都可以在同一虚拟机管理程序主机上实例化。

在这种情况下,如果整个 DC、机架或单个主机出现故障,集群绝对会变得不可用。

出于显而易见的原因,我建议不要这样做。当我在云环境(内部或外部)中部署时,我确保尽可能多地了解物理层。这样我就能够构建逻辑数据中心抽象,以避免物理单点故障。

关于cassandra - 如果在 Apache Cassandra 中,数据中心和机架不直接与物理机架或数据中心相关,那么如何处理容错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64303291/

相关文章:

database - 如何使用 CQL 在 Cassandra 中切换 Keyspace?

cassandra - 如何在没有 now() 函数的情况下将自定义 timeuuid 插入 cassandra?

java - 带有 Spark 的 Cassandra:java.io.IOException:无法在 {127.0.0.1:9042} 打开到 Cassandra 的 native 连接::

cassandra - 当行是一次性写入时,分级压缩策略仍然有利于读取吗?

Datastax 代理偶尔无法报告指标

cassandra - 运行 DataStax Enterprise 4.7 后缺少 JAR list

amazon-ec2 - Cassandra Amazon EC2 ,很多 IOWait

cassandra - 在 Cassandra 上如何启用 LDAP 身份验证

cassandra - 获取cassandra cql select中的当前日期

java - 查询包含集合(集合)的大行时,Cassandra 出现内存不足错误