S1-Bootstrap模块

作者: chenfh5 | 来源:发表于2018-04-04 17:53 被阅读77次

接下来开始Bootstrap模块的分析,目录如下,

1. Debug开启
2. Node启动

Debug开启

es的bootstrap如下,


bootstrap模块

里面Elasticsearch.java上有main()方法,通过其来启动es集群。而main()方法的调用是通过elasticsearch.sh这个脚本里面的java -cp

es集群的启动脚本 elasticsearch.sh

其中start是第一个手输入参;$@是脚本的所有参数汇总;<&-是输入重定向;&是设置为后台进程。

main入口

由此进入Elasticsearch的main(),初始化Bootstrap,之前的start在这里是一个识别的作用,是start还是version;在初始化bootstrap过程中,需要初始化env,如果在Windows本机下逐步debug,需要设置path.home或者set env

environment

至此,可以通过main function来在Windows系统下进行debug。

9200_snapshot console

console显示的cluster.namenode.name是在elasticsearch.yml配置,建议自定义,不然es分配的默认值不利于辨识。另外,出现了一个异常,后续会讲到。

Type Default Custom
cluster.name elasticsearch your custom
node.name random hero name your custom

Node启动

es集群的启动,通过Elasticsearch.main -> bootstrap.init即可,中间会涉及es绝大部分模块(plugin,setting,cluster,transport等)的初始化和相关功能服务(mapping,index,search,routing等)的注入。其主要步骤如下,

  1. CLIParser,检测CLI命令行环境
  2. instance = new Bootstrap,新建一个bootstrap实例(实例由node,keepAlive组成)
  3. prepare Environment,构建es env
    • initialSettings,settings是environment的一个属性
  4. instance.setup,根据environment配置bootstrap实例的node属性
    • node -> nodeBuilder.build = new Node
    • node constructor
      • threadpool
      • modules.add,根据environment将各具体module类加入到ModulesBuilder中,然后使其产生injector
      • pluginService
      • injector
      • client
bootstrap instance的node初始化构造
  1. instance.start,启动bootstrap实例
    • node.start
      • injector.getInstance.start,通过DI的方式将node的具体功能function挂靠在该node的injector上
    • keepAliveThread.start
injector注入

至此,es集群搭建起来了。搭建过程中所涉及的modulesfunction将在之后展开;另外es通过暴露client的方式将其一系列的功能开放出去。

client接口

相关文章

  • S1-Bootstrap模块

    接下来开始Bootstrap模块的分析,目录如下, Debug开启 es的bootstrap如下, 里面Elast...

  • python常用模块!!

    os模块: stat模块: sys模块: hashlib,md5模块: random模块: types模块: at...

  • 2018-08-19

    Angular 2 技能图谱 模块 自定义模块 根模块 特性模块 共享模块 核心模块 内置模块 Applicati...

  • 【时间管理100讲】精髓全在这里啦

    理论模块 精力管理。 行动管理。 学习模块。 高空模块。 反思模块。 运动模块。 阅读模块。 旅行模块。 人际关系...

  • python基础学习(三)

    常用模块 String模块 数学模块 随机模块 OS模块 os.path模块 re模块 常用函数及操作 列表操作 ...

  • day10-异常处理和pygame显示

    一、异常处理 1.模块 导入模块(自定义模块,第三方模块)import 模块 ---->模块.内容from 模块 ...

  • 重点知识复习(异常处理)

    1.模块 导入模块(自定义模块,第三方模块,系统其他模块)import 模块 ----> 模块.内容from 模...

  • Python常用模块

    Python常用模块之time模块 Python常用模块之os模块 Python常用模块之sys模块 Python...

  • nodejs-模块

    nodejs模块 一、nodejs模块分类 1.核心模块 Core Module、内置模块、原生模块 fs模块 p...

  • Python不同网络模块网页源代码的获取

    requests模块 或者使用 selenium模块 BeautifulSoup模块 urllib模块

网友评论

    本文标题:S1-Bootstrap模块

    本文链接:https://www.haomeiwen.com/subject/ewqlhftx.html