Elasticsearch集群扩展策略

  将节点加入集群以增加性能,看上去很简单,但是稍微走邪计划会使得你在获取集群最佳性能的这条路上走得更远。

  Elasticsearch的使用方式各有各的不同,所以需要根据如何索引和搜索数据,为集群选择最佳配置。通长来说,规划生产环境的Elasticsearch集群至少有3件 事情需要考虑:过度分片、将数据切分为索引和分片、最大化吞吐量。

1.过度分片

  过度分片(over-sharding)是指你有意地为索引创建大量分片,用于未来增加节点的过程。所以有一点需要注意,分片数最好多于节点数,这样的话在水平扩容的时候就可以有更多的节点处理额外的请求,集群具有成长的空间。但是分片并不是越多越好,每个分片都是完整的Luence索引,它需要为索引的每个分段创建一些文件描述符,增加相应的内存开销(1.占用内存,性能下降 2.触及机器文件描述符 3.压缩数据时会降低压缩比例 )。个人建议ES所创建的分片数需要结合两点去考虑,1.data节点的数量,2.JVM的内存设置,正常内存设置不要大于32G,所以从这一点建议索引的分片数为sum(index)/32+1个分片。

2.将数据切分为索引和分片

  如果我们无法增加或者减少某个索引中的主分片数量,当时我们可以对数据进行规划,让他横跨多个索引。比如产寿险行业,如果每个不同区域的数据量都很大,那就可以按照一个区域一个索引去创建。当然类似于广东,湖北这种区域, 广东数据量大可以创建4个 主分片,湖北数据量小点则可以创建2个主分片,如果考虑到后续的归档清理问题,我们则可以按月份分索引201910,201911,以这种方式将数据分段,对于搜索同样有所帮助,搜索时就是搜索当个月的。

  使用索引进行规划的另一种方式就是别名。别名(alias)就像指向某个索引或一组索引的指针,别名也允许你随时修改其所指向的索引。对于数据按照语义的方式来切分,这点非常有用。你可以创建一个别名称为去年,指向2018,档2019年1月1日到来,就可以将这个别名指向2018年的索引。当索引基于日期的信息时(就像日志文件),这项技术是很常用的,如此一个就可以按照每月、每周、每日等日期来分段,而每次分段过时的时候,“当前”的别名永远可以用来指向应该被搜索的数据,而无须修改带搜索的索引之名称。此外,别名拥有惊人的灵活性,而且几乎没有额外的负载,所以值得尝试。

3.最大化吞吐量

  最大化吞吐量是最为模糊的词语之一,意味着相当多的含义。你试图最大化索引的吞吐量?还是让搜索更快一些?一次执行多次搜索?如果是写的话,加速索引方式是减少副本数目,因为索引数据的时候,默认情况下,在数据更新到主分片和所有副本分片之前,请求是不会完成的。综上所述,索引的阶段将副本分片的数量减少到1(甚至是0,风险可以承担)是有利的。

  但是如果是读的情况下,则是增加副本,通过更多副本可以搜索更快,为什么呢?这是因为无论是主分片还是副本分片都是可以用来搜索的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值