写这篇文章的意义在于:清楚的知道elasticsearch源码的代码结构。当想去看某部分的源码的时候,我们方便快速定位到代码,直接去看。

  本来打算这篇文章给自己用的。因为一年前看过这部分,大概知道在哪里。但是过了一年竟然都忘了。所以整理的一篇文章,来记录。

  如果能帮到看源码不知道怎么看的你,也是一件值得高兴的事。有什么问题多多指教!如何读源码学习_Angus-CSDN博客

关于elasticsearch的代码结构

  我没有将项目拉下来。而是直接在github上查看的代码。我借助插件(octotree),生成了一个树形的代码目录结构。这可以帮助代码拉取有困难的朋友。(关于插件,请移步另外一篇文章:谷歌浏览器如何安装插件-以octotree为例_Angus-CSDN博客

代码结构介绍


环境相关

> .ci             
> .github
> .idea


es提供的压测工具:感兴趣的话,可以看这篇文章:如何解读Elasticsearch benchmark上的各种指标_点火三周的专栏-CSDN博客Elasticsearch 压测工具和基准数据Elastic针对Elasticsearch的性能测试/压力测试提供了一套工具——EsRally,可以方便我们快速的对Elasticsearch按照特定数据、脚本和配置进行相关性能和压力测试,并且返回整个运行过程的详细的运行指标。同时,官方也维护了一套每夜运行的基础测试环境——Elasticsearch-Benchmark,通过提供标准硬件上的测试结果以供大家参考。相信有不少人在正式搭建集群投入生产之前都曾查看过该数据,用于辅助根据和吞吐和性能确定集群规模。https://blog.csdn.net/u013613428/article/details/107926873
> benchmarks 


构建项目相关的
> build-conventions
> build-tools-internal
> build-tools



>ccr/images


各种客户端,包括了rest-high-level-client等
> client



> dev-tools


包括了docker 等各种构建方式
> distribution


文档相关
> docs


项目管理工具,就和maven一样
> gradle/wrapper


大致看了一下,这里边是一些依赖的类,包括了封装的工具类等。
> libs


没什么内容,先不关注
> licenses


这里是重点,它包含了es的一些重要的模块。包括聚类分析。
> modules

这里我特地的又展开截了一个图


插件相关
> plugins


问题汇总
> qa


这里我看是定义好的一些结构,json格式
> rest-api-spec


这里是最总要的,核心代码全在这里边!
> server

这列我也特地又截了一个图


 es的全部测试类
> test


提供安全性,警报,监视,报告,机器学习和许多其他功能
> x-pack

各个模块如何一起工作

 elasticsearch整体结构示意图_ok0011的博客-CSDN博客_elasticsearch组成

 可以将上边的内容结合下边的图一起看!就知道这些模块是如何配合工作的。

请求处理:

这里写图片描述


主要模块架构图

这里写图片描述 

 
主要模块说明

Transport Client/Node Client/REST API:三种访问es集群的方式

Transport(Netty):通信模块,数据传输,底层采用netty框架

Index、Search…:支持搜索,索引等常用操作

Discovery:节点发现,集群之间通信的基石

Plugins:很多服务以插件形式提供,官方和社区支持的ik、head、river、discovery gce…

Script:提供脚本支持,内置painless,groovy等,默认painless性能还可以

Store/Snapshot:文件存储与访问,快照创建和恢复

translog、cluster state、segments:es主要文件类型,其中translog、cluster state是es添加的数据,多个segments段组成一个完整的lucene索引

Monitor:监控模块,监控jvm,文件系统,操作系统等运行情况

File System:es支持可以在多种文件系统上运行,本地、共享型、HDFS、亚马逊云平台等
 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐