• 12.ElasticSearch系列之分布式特性及分布式搜索机制(一)


    1. 分布式特性
    • ElasticSearch的分布式架构带来的好处
      • 存储的水平扩容,支持PB级数据
      • 提高系统可用性,部分节点停止服务,整个集群服务不受影响
    2. 脑裂问题
    • Split-Brain 当出现网络问题,一个节点和其他节点无法连接,在各自的网络环境下,选举为各自主节点

    如何避免脑裂问题?

    • 限定一个选举条件,设置quorum(仲裁),只有当Master eligible节点数大于quorum时才能进行选举
      • quorum=(master节点总数/2)+1,即大多数
    • 从7.0开始,无需这个配置
    3. 分片与集群的故障转移
    • 主分片Primary Shard—提升系统存储容量
    • 副本分片Replica Shard—提高数据可用性
    • 集群状态get _cluster/_health
      • Green健康:主分片与副本分片都可用
      • Yellow亚健康:主分片都可用,副本分片部分不可用,如1个节点,分配了3个主分片,1个副本分片则无法分配,因为副本分片必须与主分片不在同一节点
      • Red不健康:部分主分片不可用
    • 故障转移
      • 对于3个主分片与1个副本分片,分布在3个节点上node1: P1 R0 node2: P2 R1 node3: P0 R2,当node1节点出现故障后,则可故障转移node2:P2 R1 R0 node3: P0 R2 P1
    4. 文档分布式存储
    4.1 文档存储在分片上
    • 文档会存储在具体的某个主分片和副本分片上,例如文档1,存储在P0和R0上

    • 文档到分片的映射算法

      • 确保文档均匀分布在所有分片上,充分利用硬件资源,避免部分繁忙部分空闲
      • 潜在的算法
        • 随机 / Round Robin.当查询文档1,分片数很多,需要多次查询才可能查询到它
        • 维护文档到分片的映射关系,当文档数据量很大时,维护成本高
        • 实时计算,通过文档1,自动算出,需要去哪个分片上获取文档
    • 文档到分片的路由算法
      shard=hash(_routing)%numbers_of_primary_shards

      • hash算法确保文档均匀分布到分片中
      • 默认的_routing值是文档id
      • 设置Index Settings后,这就是Primary主分片数不能随意修改的原因
      • 可以自行定制routing数值,如相同国家商品分配到指定shard
    PUT order/_doc/1?routing=china
    {
       ...
    }
    
    • 1
    • 2
    • 3
    • 4

    欢迎关注公众号算法小生沈健的技术博客

  • 相关阅读:
    离线数仓同步数据3
    10张流程图+部署图,讲透单点登录原理与简单实现
    python封装,继承,复写详解
    css实现盒子的四周阴影
    Django学习日志06
    web期末大作业:基于html+css+js制作 学校班级网页制作----校园运动会 4页
    [github]实用高级搜索技巧,让你更高效的在网上找开源项目做!
    新增3.2万行代码,Linux内核有望在2022年正式支持Rust
    【STL编程】【竞赛常用】【part 3】
    php redis 操作手册
  • 原文地址:https://blog.csdn.net/SJshenjian/article/details/127434985