我们要设置 4 个节点的集群来托管数据。并且集群只承载一个索引,因此在所有 4 个节点中具有相似的数据类型。
我们的目标是在节点上分片数据。假设两个碎片和两个副本。(总共 4 个节点来托管这 4 个数据分区)
文档模式为“index”,全局为“true”。
<redundancy>2</redundancy>
<nodes>
<node hostalias="node1" distribution-key="0"/>
<node hostalias="node2" distribution-key="1"/>
<node hostalias="node3" distribution-key="2"/>
<node hostalias="node4" distribution-key="3"/>
</nodes>
<engine>
<proton>
<searchable-copies>2</searchable-copies>
<flush-on-shutdown>true</flush-on-shutdown>
</proton>
</engine>
services.xml 中的上述配置是不允许的。它要求冗余至少与节点数量相同,我们需要配置,
<redundancy>4</redundancy>
和
<searchable-copies>4</searchable-copies>
让它接受一个有效的配置。
那就是将所有 4 个节点配置为拥有所有数据,并且每个节点都包含数据副本。根据http://docs.vespa.ai/documentation/content/data-placement.html - 我们需要 global=true。并注意到:
注意:全局文档功能正在开发中。它目前仅适用于所有文档已经固有地位于所有节点上的设置,即 N 个组,每个组包含一个节点。
如何在分片中分布数据?我们可以让 node1 和 node2 拥有分布式数据,并且 node3 和 node4 可以拥有冗余 2 的副本吗?