ES 源代碼閱讀(一)

啓動流程分析:node

入口:org.elasticsearch.bootstrap.Elasticsearch->org.elasticsearch.bootstrap.Bootstrap->bootstrap

生成實例->寫進程號->初始化配置文件->初始化設置實例->運行->關閉處理app

在初始化設置實例過程當中
使用初始化的配置文件初始化node實例,並設置關閉處理.在初始化node過程當中,初始化的是InternalNode實例.
在其中的start方法中 使用guice框架,加載不一樣模塊.
首先加載Discovery.class實例,而後執行設置其路由服務.
根據配置能夠生成LocalDiscovery和ZenDiscovery.
而後初始化MappingUpdateAction.啓動相關線程.
而後依次加載:IndicesService,和IndexingMemoryController,IndicesClusterStateService,IndicesTTLService
RiversManager,SnapshotsService,
TransportService 啓動一系列工做線程.
ClusterService ,RoutingService,SearchService,MonitorService,RestController.框架

LocalGatewayAllocator 初始化elasticsearch

啓動DiscoveryService 啓動相關線程,初始化GatewayService,啓動HTTPServer 啓動相關線程,初始化BulkUdpService,初始化ResourceWatcherService,初始化TribeService
以上所有組件設置爲啓動狀態.源碼分析

當Es處理請求時,會根據請求建立相關EVENT,而後將其和一系列相關listener結合交給線程池去執行,執行過程總,會遍歷每一個listener,其中傳遞的參數就是Event,而後執行相關操做.ui

接下來會結合實際建立索引時的實例來進行源碼分析.線程

相關文章
相關標籤/搜索