关于ElasticSearch的分片问题

起因

偶然间发现有人提了这样一个问题:ES的每个节点是否有每个索引的完整数据?乍一眼看,这个问题还蛮简单的,但是又有点诡异,说不上是什么地方诡异。ok话不多说,我们一起来看一下。

过程

我们先看下面这个图:

从这个图我发现两个Node节点 ,5个shard分片,1个replica备份,没毛病啊,每个节点就是有完整的信息。。。。停!作为一个吊炸天(low到爆)的程序员,我怎么可以轻易下结论,我再次画了一个图:

ok,这里是3个node,3个shard,1份replica,发现了吗,这边的话每个节点并没有完整的数据,但是任意两个节点有完整的数据

即使一台机器宕机,剩下两个节点依然可以提供完整的数据,依然满足高可用。

结论

发现规律了吗?其实很简单 如果每个机器上要有完整的数据 ,需要满足 分片数*节点数的总分片数量,当然,这里的总分片数量包含了 主分片和副本分片。因此,我们得出一个公式:副本数replica =(shardNum*nodeNum-shardNum)/shardNum。当replica大于此值时,满足要求。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值