云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > ElasticSearch 分析

ElasticSearch 分析

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 22:03:15

ElasticSearch运行流程

一、启动

1.bin/elasticsearch

elasticsearch文件最后调用了源码中org.elasticsearch.bootstrap.ElasticSearch服务。org.elasticsearch.bootstrap.ElasticSearch直接调用Bootstrap.main(args)。

2.环境设置(initialSetting)

Boostrap首先做环境设置(initialSetting),这些设置包括:config目录、data目录、

dataWithCluster目录、home目录、logs目录、plugins目录、work目录、workWithCluater目录;cluster.name。

3.执行初始化

环境设置之后是执行初始化,初始化包括setup和start两个操作。

Setup:建立一个Node;为Node设置环境;为Node设置plugins; 加载Guice模型文件;为Node生成一个client;同时加载一个钩子以便节点退出时执行close()方法。

Start:启动各个服务,这些服务包括:IndicesService、

IndicesClusterStateService、RiversManager、ClusterService、RoutingService、SearchService、MonitorService、RestController、TransportService、DiscoveryService、GatewayService、HttpServer、JmxService。

二、服务 1.IndicesService

AbstractLifecycleComponent+start()+stop()+close()+doStart()+doStop()+doClose()+lifecycleState()+addLifecycleListener()+removeLifecycleListener()AbstractComponent+nodeName()+AbstractComponent()InternalIndicesService+add()+doStart()+doStop()+doClose()+remove()+state()+changesAllowed()+UnmodifiableIterator()+hasIndex()+indices()+indexService()+indexServiceSafe()+createIndex()+cleanIndex()+deleteIndex()+CacheReaderPurgeListener()<>IndicesService+state()+hasIndex()+indicesLifecycle()+indices()+indexService()+indexServiceSafe()+createIndex()+deleteIndex()+cleanIndex()

从Bootstrap中的Start()可以看到 IndicesService的启动是从调用start()开始的。在模型文件中可以发现IndicesService的启动实例为InternalIndicesService。此类继承自AbstractLifecycleComponent。

InternalIndicesService并没有start()方法,而是从其父类

AbstractLifecycleComponent继承而来。执行start()方法时先判断能否启动,如果可以则启动监听器,再调用doStart()方法,doStart()方法可在InternalIndicesService中进行实现。

2.IndicesClusterStateService

IndicesClusterStateService与IndicesService服务启动过程类似,只不过执行doStar()方法的实现类是IndicesClusterStateService。

protected void doStart() throws ElasticSearchException { clusterService.add(this);

}

从doStart()方法来看,似乎是要将这个实例加进ClusterService的监听器列表。

AbstractLifecycleComponent+start()+stop()+close()+doStart()+doStop()+doClose()+lifecycleState()+addLifecycleListener()+removeLifecycleListener()AbstractComponent+nodeName()+AbstractComponent()IndicesClusterStateService+doStart()+doStop()+doClose()+clusterChanged()+applyNewIndices()+applyMappings()+applyNewOrUpdatedShards()+applyDeletedIndices()+applyDeletedShards()+applyCleanedIndices()+applySettings()<>ClusterStateListener+clusterChanged()

在ClusterStateListener接口中定义了clusterChanged()方法,当簇状态发生改变时,这个方法就会被调用(调用者是谁?)。当clusterChanged(clusterChangedEvent)被调用时,ClusterStateListener中其它索引的方法会被依次执行。根据传过来的事件对索引进行修改。

3.RiversManager

和前面一样RiversManager 的实现类是RiversManager,此类也是继承自

AbstractLifecycleComponent。没有实现任何接口。

除了构造方法外,也只有doStart()、doStop()、doClose()三个方法。分别如下。 protected void doStart() throws ElasticSearchException { riversRouter.start(); riversService.start(); clusterService.start(); }

protected void doStop() throws ElasticSearchException { riversRouter.stop(); clusterService.stop(); riversService.stop(); }

protected void doClose() throws ElasticSearchException { riversRouter.close(); clusterService.close(); riversService.close();

}

3.1 RiversRouter

RiversRouter和前面其它服务一样继承自AbstractLifecycleComponent类,实现了ClusterStateListener接口。

doStart()、doStop()、doClose()三个方法都未做实现,而是实现了clusterChanged()方法,在这个方法中先判断自己是不是master节点,如果不是则不理,否则向RiverClusterService提交一个远端节点状态发生改变的更新任务。

在传向RiverClusterService传了一份路由。

3.1.1 RiverClusterService

RiverClusterService继承自AbstractLifecycleComponent类,没有实现任何接口。

这个类在doStart()中会用newSingleThreadExecutor(daemonThreadFactory(settings, \来创建一个后台线程。同时提供了add()和remove方法用来增加和删除监听器。

submitStateUpdateTask()对于提交过来的请求… 好像是启动了一个线程。

搜索更多关于: ElasticSearch 分析 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

ElasticSearch运行流程 一、启动 1.bin/elasticsearch elasticsearch文件最后调用了源码中org.elasticsearch.bootstrap.ElasticSearch服务。org.elasticsearch.bootstrap.ElasticSearch直接调用Bootstrap.main(args)。 2.环境设置(initialSetting) Boostrap首先做环境设置(initialSetting),这些设置包括:config目录、data目录、dataWithCluster目录、home目录、logs目录、plugins目录、work目录、workWithCluater目录;cluster.name。 3.执行初始化

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com