根据guice的注册绑定机制,discovery的绑定顺序是这样的:
InternalNode中添加DiscoveryModule:
modules.add(new DiscoveryModule(settings));
DiscoveryModule中创建了LocalDiscoveryModule(不分析)或者ZenDiscoveryModule:
public Iterable<? extends Module> spawnModules() {
Class<? extends Module> defaultDiscoveryModule;
if (DiscoveryNode.localNode(settings)) {
defaultDiscoveryModule = LocalDiscoveryModule.class;
} else {
defaultDiscoveryModule = ZenDiscoveryModule.class;
}
return ImmutableList.of(Modules.createModule(settings.getAsClass(DISCOVERY_TYPE_KEY, defaultDiscoveryModule, "org.elasticsearch.discovery.", "DiscoveryModule"), settings));
}
ZenDiscoveryModule中将Discovery Class绑定到了ZenDiscovery Class