zoukankan      html  css  js  c++  java
  • 对ElasticSearch主副分片的理解

    ES索引中主副分片的分布:

    1:当新建一个索引库时,可以预先设置其会被分为N个分片(主分片),同时可以为每个主分片产生N个备份分片(副分片)。

    2:N个主分片随机分布在集群的多个节点中;N个副分片也是随机的分布在集群的多个节点中,但是副分片和其主分片不会在一个节点上。

    ES索引中主副分片的作用:

    1:当在该索引库中新增一个文档时,会通过计算该文档ID的哈希值来决定将该文档存储到哪个主分片上;随后会将该操作同步到该主分片的所有副本分片上,做到主副数据的一致。(主从复制的过程由ES自身完成

    2:当在该索引库中修改或者删除一个文档时,根据文档ID找到文档所在的主分片,并进行操作;随后会将该操作同步到该主分片的所有副本分片上,做到主副数据的一致。(主从复制的过程由ES自身完成

    3:当搜索索引中的文档时,每次都会从主分片和副分片中选择一套完整的分片来组合成一个索引,以供搜索,而且每次搜索请求主副的组合可能不一样;这样当并发搜索很多时,就可以把压力分散在多个节点上,做到负载均衡。(提高了搜索性能/并发吞吐量)(综合1、2、3发现,读写请求的分发也是由ES自身完成的

    4:当集群中某个节点宕机,该节点上所有分片中的数据全部丢失(既有主分片,又有副分片);丢失的副分片对数据的完整性没有影响,丢失的主分片在其他节点上的副分片就会自动变成主分片;所以整个索引的数据完整性没有被破坏。(提高了容错性/容灾性

    副分片的优点和缺点

    优点:

    1:副分片可以提高搜索性能,提高并发吞吐量。

    2:副分片可以提高容错性/容灾性。

    缺点:

    1:当副分片过多时,ES做主分片和副分片之间的数据同步时,消耗的资源和性能也不容小觑。

    ES的主副分片和mysql的读写分离的对比

    1:ES的主从复制由ES自身完成,mysql的主从复制需由开发者来完成。

    2:ES的读写请求的分发也由ES自身完成,mysql的则需要由开发者自身来完成。 

    mysql读写分离参考:https://blog.csdn.net/ITWANGBOIT/article/details/102933213

  • 相关阅读:
    left join,right join,join的区别
    java反编译工具
    maven搭建Struts2+Hibernate+Spring
    JAVA验证是否是Email地址和验证是否是手机号码
    jquery的强大选择器
    JavaScript事件委托的技术原理
    Hybrid APP混合开发的一些经验和总结
    React实例入门教程(1)基础API,JSX语法--hello world
    Vue.js 和 MVVM 的小细节
    前端构建工具gulpjs的使用介绍及技巧
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302456.html
Copyright © 2011-2022 走看看