身安不如心安,屋宽不如心宽 。

ES分片分配中的疑问

Elasticsearch | 作者 Charele | 发布于2023年07月08日 | 阅读数:1591

分片分配大概情况,它先搞两个列表,主表和次表,
先把所有分片放到主表中,依次迭代其中的所有分片,尝试分配。
迭代完成后,把主表和次表对调一下,
然后再迭代主表,,,如此循环,

111.PNG

它的意思是说:它在成功分配一个副分片后,会把这个索引的所有其它副分片放到次表里面,
等下次迭代再处理其它副分片。
比如索引a(假定主分片数是1),有主分片,副1,副2,副3,
如果副1分配出去了,它会把副2副3放到次表里面,下次迭代再处理它们。
 
我看不出什么这么做的好处啊,
因为副1分配了,副2副3也可以继续啊,为什么等到下次迭代呢
已邀请:

emmning - for learn you know

赞同来自: Charele

个人理解这就是一个分片分配顺序的实现,为了使最多的索引处于可用状态,因为现实情况有分片分配数量限制。对于索引列表
(0,P,IDX1), (0,P,IDX2), (0,R,IDX1), (0,R,IDX1), (0,R,IDX2), (0,R,IDX2),单次分配分片数量为4,(0,P,IDX1), (0,P,IDX2), (0,R,IDX1),(0,R,IDX2)会得到分配,两个索引都有副本;如果按照你说的方法则只有(0,P,IDX1), (0,P,IDX2), (0,R,IDX1), (0,R,IDX1)分片被分配,只有一个索引有副本。

要回复问题请先登录注册