我在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个相邻的分区属于同一个物理节点。从文档中我希望相邻的分区属于不同的物理节点。如果有人可以详细说明以上是否是一个错误或功能,或者可能是我身边的错误配置,我会很感激。
此致 鲍里斯
答案 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;在这种情况下似乎不会影响分配。