1

如果我有 32 台物理服务器,其中有 32 核 CPU 和 128G 内存,我想构建一个 VoltDB 集群,其中所有这 32 台服务器的 K-Safefy=2 和每台服务器中的 32 个分区,所以我们将得到 VoltDB 集群 256可用分区来保存数据。

看起来有太多的分区来拆分表,尤其是当某些表没有很多记录时。但是如果我们选择表的副本,就会有太多的表副本。

如果我们从一开始就用几台服务器构建一个小得多的集群,就会担心随着业务的增长,集群将不得不很快向外扩展。实际上,我不知道当集群水平扩展到更多节点时,VoltDB 将如何重新组织数据。

你有意见吗?赞赏。

4

1 回答 1

0

将sitesperhost 设置为小于32 可能更理想,这样某些百分比的内核就可以自由地为子系统(如导出或数据库复制)运行线程,或者处理非VoltDB 进程。通常从 8 到 24 是最佳数字。

VoltDB 基于sitesperhost、主机数量和kfactor 创建逻辑分区。如果您以后需要横向扩展,您可以向集群添加额外的节点,这将增加分区数量,VoltDB 会逐渐自动将现有分区的数据重新平衡到新分区。如果 kfactor > 0,则必须将多个服务器添加在一起。对于 kfactor=2,您将添加 3 个一组的服务器,以便它们为新分区提供自己的冗余。

您的数据基于记录的分区键值的哈希值或用于将过程的执行路由到分区的相应输入参数分布在逻辑分区中。这样,客户端应用程序代码就不需要知道分区数。每条记录进入哪个分区并不重要,但您可以假设任何共享相同分区键值的记录都将位于同一个分区中。

如果分区键选得好,应该是基数高的列,比如ID列。这将在分区之间平均分配数据和过程执行工作。

通常,VoltDB 集群的大小取决于 RAM 需求,而不是性能需求,因为即使在非常小的集群上性能也非常高。

如果您想获得评估帮助或与专家讨论集群规模和规划,您可以通过 info@voltdb.com 联系 VoltDB 或通过http://chat.voltdb.com提出更多问题。

免责声明:我为 VoltDB 工作。

于 2018-01-30T16:06:27.717 回答