0
点赞
收藏
分享

微信扫一扫

第3篇: Elasticsearch架构及模块功能介绍

悲催博士僧 2022-05-05 阅读 79

目录

1、Elasticsearch整体架构图

1.1 源码地址

1.2 架构分层

2、各层级模块解释

2.1 应用层

2.1.1 RestFul API

2.1.2 Java API

2.2 协议层

2.2.1 Thrift

2.2.2 Memcached

2.2.3 Http

2.2.4 TCP

2.2.5 JMX

2.3 发现/脚本层

2.3.1 Discovery

2.3.2 Scripting

2.4 数据处理层

2.4.1 Index Module

2.4.2 Search Module

2.4.3 Mapping

2.4.4 River

2.5 核心架构层

2.5.1 Lucene

2.6 数据存储层

2.6.1 Gateway


1、Elasticsearch整体架构图

首先,建议大家在了解架构之前,下载源码看一看工程结构,能更好的有助于理解整体架构图。

1.1 源码地址

github: https://github.com/elastic/elasticsearch

gitee: https://gitee.com/mirrors/elasticsearch

1.2 架构分层

我们先从应用层、协议层、发现/脚本层、数据处理层、核心架构层以及数据存储层这6层来梳理ES整体架构。分层如下:

 如果有一些朋友对其中涉及的名词不清楚,可以先看这篇文章:Elasticsearch的相关名称解释 。

2、各层级模块解释

2.1 应用层

2.1.1 RestFul API

在ElasticSearch中,提供了功能丰富的RestFul API操作,包括CURD操作和创建索引,删除索引等。样例格式如下:

2.1.2 Java API

2.2 协议层

2.2.1 Thrift

2.2.2 Memcached

2.2.3 Http

2.2.4 TCP

 ElasticSearch由Transport负责通信,而Transport是基于TCP通信采用Netty实现。基于Netty的通信编码中需要为客户端创建Bootstrap、服务端创建ServerBootstrap。

// Netty4Transport.jaav
@Override
protected void doStart() {
    boolean success = false;
    try {
        sharedGroup = sharedGroupFactory.getTransportGroup();
        clientBootstrap = createClientBootstrap(sharedGroup); //Bootstrap
        if (NetworkService.NETWORK_SERVER.get(settings)) {
            for (ProfileSettings profileSettings : profileSettingsSet) {
                createServerBootstrap(profileSettings, sharedGroup);
                bindServer(profileSettings); //ServerBootstrap
            }
        }
        success = true;
    } finally {
        if (success == false) {
            doStop();
        }
    }
}

2.2.5 JMX

2.3 发现/脚本层

2.3.1 Discovery

ZenDiscovery属于ES的特殊发现机制,也是ES的内置发现机制,它提供了两种发现方式:单播和多播。主要作用是发现集群中的节点以及选举Master节点。

2.3.2 Scripting

2.4 数据处理层

2.4.1 Index Module

索引模块是按索引创建的模块,控制index相关的所有方面。

2.4.2 Search Module

查询模块主要用于搜索并返回查询结果。常见的查询语句如下:

2.4.3 Mapping

2.4.4 River

2.5 核心架构层

2.5.1 Lucene

2.6 数据存储层

2.6.1 Gateway

举报

相关推荐

0 条评论