riak_core vnode发行版

时间:2015-02-21 19:47:25

标签: erlang riak

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

之后生成的

当我查看两个节点的vnodes分布时:

{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>.......................
]
}

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

此致 鲍里斯

2 个答案:

答案 0 :(得分:2)

Riak_core默认为target_n_val为4(https://github.com/basho/riak_core/blob/riak_core-0.14.2/ebin/riak_core.app#L73)。这是riak_core_claim模块使用的preflist大小。

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

如果你在app.config中将target_n_val设置为2,那么应该更好地将相邻的vnode放在同一个节点上。

答案 1 :(得分:0)

通过设置:

,我还得到了所有相邻vnode位于不同物理节点上的分布
{wants_claim_fun, {riak_core_claim, wants_claim_v3}},
{choose_claim_fun, {riak_core_claim, choose_claim_v3}}

用于riak_core app。

&#39; target_n_val&#39;在这种情况下似乎不会影响分配。