我目前正计划设置一个服务,该服务迟早会在全球范围内提供,并且对可用性和容错性提出了更高的要求。将有一个较高的阅读率和高写入率,该系统应该能够按需缩放。
我计划提供的服务的一个更特殊的特性是,数据将被极强地绑定到某个地理位置--例如,在99.99%的情况下,美国城市的数据将永远不会被来自欧洲的查询(实际上,即使是某个城市的数据也不太可能从该城市旁边的城市查询)。
我想要减少的是:
在存储技术方面,我认为我最好的存储解决方案是cassandra。我看到的用例选项是:
解决方案1的缺点可能是巨大的管理开销和大量的手工工作;第二种解决方案的缺点将是大量不必要的数据复制;第三种解决方案的缺点将是由于世界各地的随机分区而导致的网络延迟相当高。
因此,在理论上,我最喜欢解决方案4。在这里,我将拥有相当数量的管理开销、低数量的不必要的数据复制和良好的可用性。然而,要实现这一点(据我所知),我需要一个ByteOrderPartitioning,这在很多方面都是非常不推荐的。
是否有一种方法可以在不使用ByteOrderPartitioning的情况下实现接近解决方案4的解决方案,或者是在ByteOrderPartitioning可能有意义的情况下,还是我遗漏了一个明显的第五个解决方案?
发布于 2015-04-16 13:37:23
重新考虑备选案文2。
它不仅能解决你的问题。它甚至会为你解决地理冗余问题。正如您所提到的,您需要具有高可用性。在不同的数据中心中拥有一个副本听起来不错,以防其中一个数据中心死亡。
如果您完全不想在DC之间进行复制,那么这也是一个选项。您可以在不同区域上拥有多个DC,而无需在它们之间进行复制。
https://stackoverflow.com/questions/29675799
复制相似问题