riak_core vnode分布

riak_core vnode distribution

我在 2 节点集群上安装了 riak_core 应用程序。该应用程序的模板是在 https://github.com/rzezeski/try-try-try/tree/master/2011/riak-core-first-multinode

之后生成的

当我查看跨 2 个节点的 vnode 分布时:

{ok, Ring} = riak_core_ring_manager:get_my_ring(), 
riak_core_ring:chash(ring).

,我明白了:

{64,
 [{0, 'node1@127.0.0.1'},
  {22835963083295358096932575511191922182123945984, 'node1@127.0.0.1'},
  {45671926166590716193865151022383844364247891968, 'node2@127.0.0.1'},
  {68507889249886074290797726533575766546371837952, 'node2@127.0.0.1'},
  {91343852333181432387730302044767688728495783936, 'node1@127.0.0.1'},
  {114179815416476790484662877555959610910619729920, 'node1@127.0.0.1'},
  {137015778499772148581595453067151533092743675904, 'node2@127.0.0.1'},
  {159851741583067506678528028578343455274867621888, 'node2@127.0.0.1'},
  {182687704666362864775460604089535377456991567872, 'node1@127.0.0.1'},
  {205523667749658222872393179600727299639115513856, 'node1@127.0.0.1'},
  {228359630832953580969325755111919221821239459840, 'node2@127.0.0.1'}, 
...............<the rest of vnodes>.......................
]
}

因此 vnode 成对出现,使得 2 个相邻分区属于同一个物理节点。从文档中我希望相邻的分区属于不同的物理节点。如果有人可以详细说明以上是错误还是功能,或者我这边的配置错误,我将不胜感激。

此致, 鲍里斯

Riak_core 将默认为 target_n_val 共 4 个(在 https://github.com/basho/riak_core/blob/riak_core-0.14.2/ebin/riak_core.app#L73). This is the preflist size used by the riak_core_claim 模块。

声明算法将尝试确保在任何 target_n_val 个连续 vnode 链中没有 2 个驻留在同一节点上。

如果您在 app.config 中将 target_n_val 设置为 2,则最好不要将相邻的 vnode 放在同一节点上。

我还得到了所有相邻 vnode 驻留在不同物理节点上的分布,通过设置:

{wants_claim_fun, {riak_core_claim, wants_claim_v3}},
{choose_claim_fun, {riak_core_claim, choose_claim_v3}}

用于 riak_core 个应用程序。

'target_n_val' 似乎不影响这种情况下的分配。