分布式系统,即使有极少数机器请求响应时间较长,也有大概率导致用户请求的响应时间变长。
节点情况各不相同,最常见因素是“垃圾回收”,某个节点都stop the wrold,任务处理自然响应慢一点。而垃圾回收,就像是去厕所大号一样,有规律,但时间点不一定好控制。叠加其他因素交叉在一起,整体上是不能做到保证每个节点都是同等的响应时间。
举个例子,分布式下某一任务受极少数节点影响,就像约好同事们下班一起去团建,6点集合,这时有的同事要加班、有的同事要给公交卡充钱等等,实际聚齐的时间一定会超过6点。
elasticsearch路由目的就是要确保文档均匀分布到分片,只要是跨分片操作都会发生长尾效应,从而拖累操作,使处理时间变长,进行影响读写能力。
bulk下CRUD操作都有,多个文档,跨分片、路由策略、分布场景,自然会响应时间变长,单位写能力下降。[2]
ES默认使用Query then fetch的搜索类型。它发送查询到每个shard找到所有匹配的文档。
两个出发点:一是加强节点本身的能力;二是回避跨节点操作;
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。