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
{
   ...
}

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

posted @ 2022-10-20 20:56  算法小生  阅读(24)  评论(0编辑  收藏  举报