赞
踩
写这篇文章的意义在于:清楚的知道elasticsearch源码的代码结构。当想去看某部分的源码的时候,我们方便快速定位到代码,直接去看。
本来打算这篇文章给自己用的。因为一年前看过这部分,大概知道在哪里。但是过了一年竟然都忘了。所以整理的一篇文章,来记录。
如果能帮到看源码不知道怎么看的你,也是一件值得高兴的事。有什么问题多多指教!如何读源码学习_Angus-CSDN博客
我没有将项目拉下来。而是直接在github上查看的代码。我借助插件(octotree),生成了一个树形的代码目录结构。这可以帮助代码拉取有困难的朋友。(关于插件,请移步另外一篇文章:谷歌浏览器如何安装插件-以octotree为例_Angus-CSDN博客)
环境相关
> .ci
> .github
> .idea
构建项目相关的
> 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、亚马逊云平台等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。