暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ElasticSearch的架构

Alleria Windrunner 2020-12-25
2030
上一篇我们简单的介绍了ElasticSearch,本篇我们一起来分析一下ElasticSearch的架构。首先ElasticSearch架构整体示意图如下:


网关Gateway层

首先是网关Gateway层,网关Gateway层是底层文件系统,是ES用来存储索引文件的一个文件系统且它支持很多类型。它的主要职责是用来对数据进行长持久化以及整个集群重启之后可以通过gateway重新恢复数据。代表 es索引的持久化存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到硬盘。
数据安全方面,当这个es集群关闭再重新启动时就会从gateway中读取索引数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
另外存储的信息主要包括:
  • 索引信息

  • 集群信息

  • mapping



DLD

接着是DLD,Gateway上层就是一个lucene的分布式框架,lucene是做检索的,但是它是一个单机的搜索引擎,像这种es分布式搜索引擎系统,虽然底层用lucene,但是需要在每个节点上都运行lucene进行相应的索引、查询以及更新,所以需要做成一个分布式的运行框架来满足业务的需要。


Discovery和Script

然后关于Discovery和Script,es是一个集群包含很多节点,很多节点需要互相发现对方,然后组成一个集群包括选主的,这些es都是用的discovery模块,默认使用的是 Zen。es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。es查询还可以支撑多种script即脚本语言,包括mvel、js、python等等。


通信

另外一方面es内部节点或集群与客户端的交互方式默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成),节点间通信端口默认:9300-9400。


四大模块组件

es的四大组件包括:
  • Index Module

  • Search Module

  • Mapping Module

  • River Module


Index Module是索引模块,就是对数据建立索引也就是通常所说的建立一些倒排索引等。Search Module是搜索模块,就是对数据进行查询搜索。Mapping Module是数据映射与解析模块,就是你的数据的每个字段可以根据你建立的表结构通过mapping进行映射解析,如果你没有建立表结构,es就会根据你的数据类型推测你的数据结构之后自己生成一个mapping,然后都是根据这个mapping进行解析你的数据。
River Module 在es2.0之后应该是被取消了,它的意思表示是第三方插件,例如可以通过一些自定义的脚本将传统的数据库(mysql)等数据源通过格式化转换后直接同步到es集群里,这个River大 部分是自己写的,写出来的东西质量参差不齐,将这些东西集成到es中会引发很多内部bug,严重影响了 es的正常应用,所以在es2.0之后考虑将其去掉。

RESTful接口层

最后就是最上层暴露给用户的访问接口,官方推荐的方案就是这种Restful接口,直接发送http请求,方便后续使用nginx做代理、分发包括可能后续会做权限的管理,通过http很容易做这方面的管理。

文章转载自Alleria Windrunner,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论