美文网首页SparkDataAn面试精选
ES的分布式架构原理?

ES的分布式架构原理?

作者: 名字是乱打的 | 来源:发表于2021-08-16 22:40 被阅读0次
    一个三个es进程组成的es集群,约定了该index有三个primary shard,三个replicat shard 分布式es的框架图demo

    一. es的shard&replica机制

    (1)index包含多个shard
    (2)每个shard都是一个最小工作单元,承载部分数据,lucene实例,完整的建立索引和处理请求的能力
    (3)增减节点时,shard会自动在nodes中负载均衡
    (4)primary shard和replica shard,每个document肯定只存在于某一个primary shard以及其对应的replica shard中,不可能存在于多个primary shard
    (5)replica shard是primary shard的副本,负责容错,以及承担读请求负载
    (6)primary shard的数量在创建索引的时候就固定了,replica shard的数量可以随时修改
    (7)primary shard的默认数量是5,replica默认是1,默认有10个shard,5个primary shard,5个replica shard
    (8)primary shard不能和自己的replica shard放在同一个节点上(否则节点宕机,primary shard和副本都丢失,起不到容错的作用),但是可以和其他primary shard的replica shard放在同一个节点上
    (9 )es里写只会往primary里写,读的话随便primary或者replicat都可以

    二. master结点:

    es集群多个节点,会自动选举一个节点为master节点,这个master节点其实就是干一些管理的工作的,比如维护索引元数据,负责切换primary shard和replica shard身份之类的。

    要是master节点宕机了,那么会重新选举一个节点为master节点。

    如果是非master节点宕机了,那么会由master节点,让那个宕机节点上的primary shard的身份转移到其他机器上的replica shard。

    等到我们修复了那个宕机机器,重启了之后,master节点会控制将缺失的replica shard 身份分配过去,同步后续修改的数据之类,让集群恢复正常。

    三.关于shard的个数问题

    适当的提升分片数量可以提升建立索引的速度;
    一般情况下:一个索引库建立5-20个分片是最合适的;

    注意:如果分片过少或者过多,都会降低检索的速度

    分片数过多会导致:

    • 1、 会导致打开比较多的文件
    • 2、 分片是存储在不同机器上的,分片数越多,机器之间的交互也就越多;

    分片数太少导致:

    • 单个分片索引过大,降低整体的检索速率

    建议:
    是将单个分片存储存储索引数据的大小控制在20G左右;绝对不要超过50G , 否则性能很差
    最终分片数量 = 数据总量/20G

    相关文章

      网友评论

        本文标题:ES的分布式架构原理?

        本文链接:https://www.haomeiwen.com/subject/vcyxvctx.html