Elasticsearch(3) 架构结构

Elasticsearch的架构 

image

Gateway层

es用来存储索引文件的一个文件系统且它支持很多类型,例如:本地磁盘、共享存储(做snapshot的时候需要用到)、hadoop 的hdfs分布式存储、亚马逊的S3。它的主要职责是用来对数据进行长持久化以及整个集群重启之后可以通过gateway重新恢复数据。

Distributed Lucene Directory

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

四大模块组件

districted lucene directory之上就是一些es的模块

1.Index Module是索引模块,就是对数据建立索引也就是通常所说的建立一些倒排索引等;

2.Search Module是搜索模块,就是对数据进行查询搜索;

3.Mapping模块是数据映射与解析模块,就是你的数据的每个字段可以根据你建立的表结构 通过mapping进行映射解析,如果你没有建立表结构,es就会根据你的数据类型推测你 的数据结构之后自己生成一个mapping,然后都是根据这个mapping进行解析你的数据;

4.River模块在es2.0之后应该是被取消了,它的意思表示是第三方插件,例如可以通过一 些自定义的脚本将传统的数据库(mysql)等数据源通过格式化转换后直接同步到es集群里, 这个river大部分是自己写的,写出来的东西质量参差不齐,将这些东西集成到es中会引发 很多内部bug,严重影响了es的正常应用,所以在es2.0之后考虑将其去掉。

Discovery、Script

es4大模块组件之上有 Discovery模块:es是一个集群包含很多节点,很多节点需要互相发现对方,然后组成一个集群包括选 主的,这些es都是用的discovery模块,默认使用的是Zen,也可是使用EC2;es查询还可以支撑多种script即脚本语言,包括 mvel、js、python等等。

Transport协议层

再上一层就是es的通讯接口Transport,支持的也比较多:Thrift、Memcached以及Http,默认的是http,JMX就是java的一个 远程监控管理框架,因为es是通过java实现的。

RESTful接口层

最上层就是es暴露给我们的访问接口,官方推荐的方案就是这种Restful接口,直接发送http请求,方便后续使用nginx做代理、 分发包括可能后续会做权限的管理,通过http很容易做这方面的管理。如果使用java客户端它是直接调用api,在做负载均衡以 及权限管理还是不太好做。

RESTful API

一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。 基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。在目前主流的三种Web服务交互方案中,REST相比于S OAP(Simple Object Access protocol,简单对象访问协议)以及XML-RPC更加简单明了

(Representational State Transfer 意思是:表述性状态传递)

它使用典型的HTTP方法,诸如GET,POST.DELETE,PUT来实现资源的获取,添加,修改,删除等操作。即通过HTTP动词来实现资源的状态扭转
复制代码

GET 用来获取资源

POST 用来新建资源(也可以用于更新资源)

PUT 用来更新资源

DELETE 用来删除资源

参考:

掘金

猜你喜欢

转载自blog.csdn.net/CoderTnT/article/details/120783780