欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

elasticSearch源码分析——依赖注入与模块分析

程序员文章站 2022-05-02 23:32:35
...
    今天开始查阅es源码,然后就有问题引导了,首先整个系统包含多少个模块?这些模块有事怎么组织管理的呢?
    elasticsearch使用的是google开源的依赖注入框架guice,这个项目号称比spring快100倍,具体性能没有测试过,不过由于其代码比较简洁,比spring快很有可能,是不是快那么多就不知道了。
    public static void main(String[] args) {
       Injector injector = Guice.createInjector(new BillingModule());
       BillingService billingService = injector.getInstance(BillingService.class);
    }

    上面就是在main方法中使用Injector进行注入与获取实例,这就是使用Guice进行依赖注入的一个简单例子。elasticsearch里面的组件基本都是用这种方式进行模块化管理,elasticsearch对guice进行了封装,通过ModulesBuilder类构建es的模块。
    大概了解了一下,一个es节点大概包括一下模块:
    PluginsModule:插件模块
    SettingsModule:设置参数模块
    NodeModule:节点模块
    NetworkModule:网络模块
    NodeCacheModule:缓存模块
    ScriptModule:脚本模块
    JmxModule:jmx模块
    EnvironmentModule:环境模块
    NodeEnvironmentModule:节点环境模块
    ClusterNameModule:集群名模块
    ThreadPoolModule:线程池模块
    DiscoveryModule:自动发现模块
    ClusterModule:集群模块
    RestModule:rest模块
    TransportModule:tcp模块
    HttpServerModule:http模块
    RiversModule:river模块
    IndicesModule:索引模块
    SearchModule:搜索模块
    ActionModule:行为模块
    MonitorModule:监控模块
    GatewayModule:持久化模块
    NodeClientModule:客户端模块
    接下来,就需要对这些模块进一步分析。


程序猿行业技术生活交流群:181287753(指尖天下),欢迎大伙加入交流学习。