如果我有32台物理服务器,里面有32核CPU和128G内存,我想用所有这32台服务器构建一个VoltDB集群,每个服务器上有32个分区,这样我们就可以得到256个可用分区的VoltDB集群来保存数据。
看起来有太多的分区无法拆分表,特别是当一些表没有太多记录的时候。但是,如果我们选择表的副本,将会有太多的表副本。
如果我们从一开始就用几台服务器构建一个小得多的集群,人们担心随着业务的增长,集群将不得不很快向外扩展。实际上,我不知道当集群水平扩展到更多节点时,VoltDB将如何重新组织数据。
你有什么意见吗?非常感谢。
发布于 2018-01-31 00:06:28
将sitesperhost设置为小于32可能更好,这样一些%的核心可以自由地为子系统运行线程,例如导出或数据库复制,或者处理非VoltDB进程。通常,8- 24之间的某个值是最佳数字。
VoltDB根据sitesperhost、主机数量和kfactor创建逻辑分区。如果您稍后需要向外扩展,您可以向集群添加额外的节点,这将增加分区数量,VoltDB会逐渐自动将数据从现有分区重新平衡到新分区。如果kfactor > 0,则必须将多台服务器添加到一起。对于kfactor=2,您将以3台为一组添加服务器,以便它们为新分区提供自己的冗余。
根据记录的分区键值的散列或用于将过程的执行路由到分区的相应输入参数,将数据分布在逻辑分区之间。这样,客户端应用程序代码就不需要知道分区的数量。每条记录转到哪个分区并不重要,但您可以假设共享相同分区键值的任何记录都将位于同一分区中。
如果您选择正确的分区键,它们应该是基数较高的列,例如ID列。这将在分区之间均匀地分配数据和过程执行工作。
通常,VoltDB集群的大小基于内存需求而不是性能需求,因为即使是非常小的集群,其性能也非常高。
如果您希望获得评估方面的帮助或与专家讨论集群大小和规划,您可以在info@voltdb.com上联系VoltDB,或在http://chat.voltdb.com上询问更多问题。
免责声明:我为VoltDB工作。
https://stackoverflow.com/questions/48525156
复制相似问题