有关elasticsearch分片策略的总结
原先普通索引我的分片策略是: 主分片=节点数,副本=1,这样可以保证业务数据一定的可用性(丢失一个节点数据完整),且书局是均匀的读写请求在各个节点也是均匀的。

该模式目前看来并不是一个最好的方案,首先对于写请求,请求会优先落到主分片,再由主分片下发到各个副本,默认半数节点同步完返回,主分片=机器数可以保证写请求负载均衡,而1个副本的情况下主分片写成功即可,所以该模式对写还是相对友好。
但是读场景下,由于多个分片分散在不同机器上,请求会从client node发布到各个分片号上取topN汇总,通一个分片号的分片不会出现在一台机器,所以虽然搜索请求还是负载均衡的,但是等于每个机器上都执行了一次搜索,而且有的分片上有目标数据有的没有,也会出现有的机器上执行的快,负载低;有的执行慢负载高。
那么针对读远大于写的这种case,我的方案是:主分片=1,副本=节点数-1。 这样能够保证每个节点一个分片,读请求在任意分片都是可执行的,而且主分片只有一个,意味着搜索请求既可以负载到任一节点执行,同一个请求又不会复制到多个机器执行,就能减少多余的查询开销。

当然了这样做对写就不友好了,首先多个副本,默认的测略是半数完成返回,理论上副本越多读延时越长,而且单个主分片意味着写请求会全都打到在主分片所在机器。不过对于写远小于读的场景应该是可以接受的。还有个问题就是读远大于写,可能会有半数分片没有同步完的执行了读,存在一定的数据不一致,这种可以通过调整weite.consistency为all来解决,只要写性能优先级不高。
所以最后我的结论是:
1.读远大于写的场景,可以减少主分片个数,增加副本数,提升读吞吐率,前提是写的优先级不高。极端情况下单分片多副本可以最大程度提升总的读吞吐。
2.写远大于读的场景,最大程度分配主分片个数,一个机器一个,并最大程度减少副本数(极端情况下集群规模不大且可用性优先级较低时可以不要副本)。
额外多说下,提到分片,segment作为更细粒度的分片,其相关策略可以类比,因为读请求也是要遍历各个segment的,因此读场景下适当减少segment能够减少segment的遍历。而合并segment也是开销比较大的动作,尽量在低峰期处理避免cpu load过高反噬读性能。
有关elasticsearch分片策略的总结的更多相关文章
- Elasticsearch分片、副本与路由(shard replica routing)
本文讲述,如何理解Elasticsearch的分片.副本和路由策略. 1.预备知识 1)分片(shard) Elasticsearch集群允许系统存储的数据量超过单机容量,实现这一目标引入分片策略sh ...
- Elasticsearch分片优化
原文地址:https://qbox.io/blog/optimizing-elasticsearch-how-many-shards-per-index 大多数ElasticSearch用户在创建索引 ...
- 【分库分表】sharding-jdbc—分片策略
一.分片策略 Sharding-JDBC认为对于分片策略存有两种维度: 数据源分片策略(DatabaseShardingStrategy):数据被分配的目标数据源 表分片策略(TableShardin ...
- Elastic-Job-Lite 源码分析 —— 作业分片策略
摘要: 原创出处 http://www.iocoder.cn/Elastic-Job/job-sharding-strategy/ 「芋道源码」欢迎转载,保留摘要,谢谢! 本文基于 Elastic-J ...
- sharding-jdbc 分库分表的 4种分片策略,还蛮简单的
上文<快速入门分库分表中间件 Sharding-JDBC (必修课)>中介绍了 sharding-jdbc 的基础概念,还搭建了一个简单的数据分片案例,但实际开发场景中要远比这复杂的多,我 ...
- Sharding-JDBC分片策略详解(二)
一.分片策略 https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/sharding/ Sha ...
- Elasticsearch 分片集群原理、搭建、与SpringBoot整合
单机es可以用,没毛病,但是有一点我们需要去注意,就是高可用是需要关注的,一般我们可以把es搭建成集群,2台以上就能成为es集群了.集群不仅可以实现高可用,也能实现海量数据存储的横向扩展. 新的阅读体 ...
- 【打分策略】Elasticsearch打分策略详解与explain手把手计算
一.目的 一个搜索引擎使用的时候必定需要排序这个模块,一般情况下在不选择按照某一字段排序的情况下,都是按照打分的高低进行一个默认排序的,所以如果正式使用的话,必须对默认排序的打分策略有一个详细的了解才 ...
- Elasticsearch 分片路由原理指定分片存储查询
Elasticsearch 项目中使用到Es的父子结构.在数据填充之后,查看每个节点的数据分布情况,发现有的节点数据多,有的节点少的情况,在未使用Es父级结构之前,每个节点的数据分布还算平均,如下图: ...
随机推荐
- HDU 4607 Park visit (求树的直径)
解题思路: 通过两次DFS求树的直径,第一次以随意点作为起点,找到距离该点距离最远的点,则能够证明这个点一定在树的直径上,然后以该点为起点进行DFS得到的最长路就是树的直径. 最后的询问,假设K &l ...
- SQL SERVER读书笔记:nolock
让查询语句不去申请共享锁,从而消除死锁,效果立竿见影. 缺点: 1.脏读 2.只能解决共享锁(S锁)参与的问题 3.需要修改语句本身才能使用
- setResult详解
startActivityForResult与startActivity的不同之处在于:1.startActivity( ) 仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startAct ...
- identity in sql server 批量插入history
https://stackoverflow.com/questions/1920558/what-is-the-difference-between-scope-identity-identity-i ...
- 开源DDos 机器学习思路求解的一些源码——TODO 待分析
一些源码:https://github.com/elbaulp/MafDet System that aims to detect and mitigate DDoS attacks using Ma ...
- php xml 转array 函数 (原创)
/** *Author zhudongchang *Date 2015/6/12 原创 *xml 转array 函数 *@param string $xmlStr xml字符串 *@return st ...
- Dijkstra算法原理及证明(转)
Dijkstra算法及其证明 算法: 设G是带权图,图中的顶点多于一个,且所有的权都为正数.本算法确定从顶点S到G中其他各个顶点的距离和最短通路.在本算法中P表示带永久标记的顶点的集合.顶点A的前驱是 ...
- 【TYVJ1936】【Clover杯NOIP模拟赛IV】太空战队
[问题描述] 在社会经济高速发展的今天,借助高科技手段,组建太空战队的愿望就快实现了. 战队属下有N个航天员.作为空军选拔上来的佼佼者,每个航天员都有与生俱来的骄傲——他们每个人都认为自己是最强的或者 ...
- 2018亚洲区预选赛北京赛站网络赛 D.80 Days 尺取
题面 题意:你带着K元要去n个城市,这n个城市是环形的,你可以选择任意一个起点,然后顺时针走,对于每个城市,到达时可以获得a元,但是从这里离开又需要花费b元,问你能否找到一个起点(输出花钱最少的那个) ...
- js原生淘宝京东宝贝放大镜效果
js实现商城放大镜效果 效果: 鼠标放上去会有半透明遮罩.右边会有大图片局部图. 鼠标移动时右边的大图片也会局部移动. 技术点: Event Event 是一个事件对象,当一个事件发生后,和当前事件发 ...