今天開始查閱es源碼,然後就有問題引導了,首先整個系統包含多少個子產品?這些子產品有事怎麼組織管理的呢?
elasticsearch使用的是google開源的依賴注入架構guice,這個項目号稱比spring快100倍,具體性能沒有測試過,不過由于其代碼比較簡潔,比spring快很有可能,是不是快那麼多就不知道了。
上面就是在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(指尖天下),歡迎大夥加入交流學習。