ES源代码分析 - 1. Es启动流程

Elasticsearch的启动代码包含详尽的自检和环境检测,使用JNA进行OS参数获取。启动流程涉及Elasticsearch、Bootstrap和Node类。Bootstrap通过Natives类利用JNA进行系统调用过滤和内存锁定等操作,确保安全运行。启动过程还包括jar冲突检查和模块化架构的Node启动。
摘要由CSDN通过智能技术生成

Elasticsearch的bootstrap代码是我个人到目前为止见过的写得最好的server端启动代码(没有之一),当中包含了大量的自检和环境检测代码,甚至用到了JNA来做OS层面的参数获取和设置。这对于我们写server端代码有很大的参考价值。

ES的启动流程主要包含以下核心类:

Elasticsearch - main入口方法

Bootstrap - 启动相关静态辅助类。当中启动了一个keepAliveThread的前台线程,防止所有daemon线程终止后,整个进程推出;setup中做了大量自检和环境监测

Node - ES节点的封装类。ES依赖了google的guice做DI,整个架构是高度模块化的,Node中初始化并启动了所有的Modules。

从流程上看,Bootstrap主要会经历如下过程:

在整个启动过程中,最有意思的是Bootstrap.step方法,当中会通过Natives类做大量JNA调用,设置和探测OS层面的参数。主要包含

definitelyRunningAsRoot

若当前进程以root账户启动,则退出

tryInstallSystemCallFilter

由bootstrap.system_call_filter参数配置,若为true则激活linux的沙箱机制。相关背景请参阅

https://www.elastic.co/guide/en/elasticsearch/reference/5.4/system-call-filter-check.html

https://w

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值