zoukankan      html  css  js  c++  java
  • ES 架构原理

    ES 架构原理


    一、简介

    Elasticsearch是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch基于Lucene开发,现在是使用最广的开源搜索引擎之一。Elasticsearch可以应用于在/离线日志流水、用户标签画像、数据库二级缓存、安全风控行为数据、图数据库索引、监控数据、Wiki文档检索等应用场景。


    二、架构

    Elasticsearch 架构原理和网易云NES 最佳实践— langrx

     

    master node:负责 es 集群的节点发现和元数据管理

    master-eligible node:有资格竞选 Master 的节点,一般奇数个

    data node:存储数据

    coordinating node:复制处理客户端请求的协调节点

    ingest node:对索引文档做预处理工作的节点

     

    shard:数据以shard为单位保存到data node中

    primary/replica shard:每个shard可配置一个或多个replica 副本,primary shard会把请求复制到replica shard上

     

    index:存储数据的基本单位,一个索引相当于一个库

    type:每个index有一个或多个type,一个type相当于一张表;mapping相当于表结构定义

    document:往一个index的一个type添加的一行数据称为document,每个document有多个field,每个field代表document的一个字段值


    三、读写原理

    es写入数据的过程

    1. 客户端选择一个node发送请求过去,这个node就是coordinating node (协调节点)

    2. coordinating node,对document进行路由,将请求转发给对应的node

    3. 实际上的node上的primary shard处理请求,然后将数据同步到replica node

    4. coordinating node,如果发现primary node和所有的replica node都搞定之后,就会返回请求到客户端

    es读数据过程

    查询,GET某一条的数据,写入某个document,这个document会自动给你分配一个全局的唯一ID,同时跟住这个ID进行hash路由到对应的primary shard上面去,当然也可以手动的设置ID

    1. 客户端发送任何一个请求到任意一个node,成为coordinate node

    2. coordinate node 对document进行路由,将请求转发到对应的node,此时会使用round-robin随机轮训算法,在primary shard 以及所有的replica中随机选择一个,让读请求负载均衡,

    3. 接受请求的node,返回document给coordinate note

    4. coordinate node返回给客户端

    es搜索数据过程

    1. 客户端发送一个请求给coordinate node

    2. 协调节点将搜索的请求转发给所有的shard对应的primary shard 或replica shard

    3. query phase:每一个shard 将自己搜索的结果(其实也就是一些唯一标识),返回给协调节点,有协调节点进行数据的合并,排序,分页等操作,产出最后的结果

    4. fetch phase ,接着由协调节点,根据唯一标识去各个节点进行拉去数据,最总返回给客户端


    参考

    https://mp.weixin.qq.com/s/0LU1cK9_fmzNUBRa3V5rdg

    https://niceaz.com/2018/12/09/elasticsearch-architecture/

    https://segmentfault.com/a/1190000015256970

  • 相关阅读:
    FocusBI:MDX检索多维模型
    FocusBI:地产分析&雪花模型
    FocusBI:租房分析&星型模型
    FocusBI:《DW/BI项目管理》之SSIS执行情况
    FocusBI:租房分析可视化(PowerBI网址体验)
    Eclipse创建自定义HTML5,JSP模板
    小测试解析
    vue---组件通讯
    前期准备-Git篇
    npm install 关于 sass 屡次失败问题
  • 原文地址:https://www.cnblogs.com/GO-NO-1/p/13353993.html
Copyright © 2011-2022 走看看