0

我对 NoSQL 或 NewSQL/NeoSQL 数据库服务器的了解非常有限,只是理论上的。我使用过传统的 RDBMS(如 MySQL、Postgres)和目录服务器(OpenLDAP),有无复制。

我的应用程序堆栈基于 JBoss,我的任务是在 VoltDB 中设置一个最小的演示(使用我们的应用程序),它可以展示数据的持久性和高可用性。性能测试,根本不是一个目标。

一直在阅读 VoltDB 规划指南,但就所需的服务器(或 VoltDB 实例)数量而言,我对“+1”或“x2”感到困惑。特别是考虑到这两个陈述:-

为 K-Safe 集群调整硬件大小的最简单方法是根据预计的吞吐量和容量来调整数据库的初始实例大小,然后将服务器数量乘以所需的副本数量(即 K-Safety值加一)。

经验法则

使用K-Safety时,将集群节点数配置为数据库副本数的整数倍(即K+1)

问题:

  1. 现在,假设我需要 1 台服务器给定容量/吞吐量要求。那么,为了能够具有持久性和高可用性,我需要:2、3 还是 4 台服务器?
  2. OTOH,仅使用 1 台服务器,我必须放弃 VoltDB 的所有关键功能吗?
  3. VoltDB 的完整磁盘持久性和快照之间是否存在任何关系(或冲突)?比如说,磁盘持久性的可用性消除了对快照的需求?
4

1 回答 1

1
  1. 如果您使用 2 台服务器,您可以保留数据的同步副本以防止数据丢失,就像 RAID1 硬盘驱动器一样。您的数据是双重安全的,但存在可用性问题。只有两台服务器,不可能区分网络分裂和故障节点。在某些情况下,当另一个活动节点无法确保不会出现裂脑时,VoltDB 会关闭一个活动节点。对于 3 个节点,这不会成为问题,并且在任何单个节点发生故障(k=1 或 k=2)后集群将保持可用。

  2. 只有一台服务器,您所失去的只是多台服务器上的多个数据副本以及允许 VoltDB 在节点故障后继续运行的高可用性功能。您仍然拥有所有其他 VoltDB 功能,包括全磁盘持久性。

于 2015-08-12T13:12:11.360 回答