好的想法是十分钱一打,真正无价的是能够实现这些想法的人。

ES的写操作疑问

Elasticsearch | 作者 sunnyisgoodboy | 发布于2018年07月10日 | 阅读数:3469

版本:ES6.x
看了网上的很多说ES插入操作的流程,有如下疑问:
 
当请求要创建Doc的时候,主分片接受请求并转发请求到副本所在的节点的时候,是主分片写成功就返回给客户端成功了还是要等所有的副本分片都成功了才返回给客户端成功,如果是第二个的话 那么有的副本分片所在的节点写失败了或者超时了 这个时候是怎么处理的,有点疑问,请知道的同学说下这个流程。谢谢
已邀请:

kennywu76 - Wood

赞同来自: strglee Acepcs cccthought zisonmo

当前版本(ES6.0)里,每个shard都会在master结点里维护一个in-sync group。 每次写操作,都是先发给对应in-sync group里的主片,主片写成功以后,再并发转发给group内其他的副片。 只有全部主和副都写成功了,才会返回给客户端。
 
如果主片写成功了,但某个副片所在结点故障,无法响应或者响应超时, 主分片会向master发送shard failed通知,由master更新in-sync group,将失败的副片从组内剔除出去。 之后,只要是剩余的in-sync shard都写成功了,就会返回给客户端。 默认的集群配置情况下,只要in-sync group里有至少一个shard可用(用来担当主片角色),写入就可以成功,并返回给客户端。

strglee

赞同来自:

es在新建更新删除的时候都会遵循两个原则 consistency 和 timeout 具体看下文档吧 
https://www.elastic.co/guide/c ... .html

要回复问题请先登录注册