在new Bootstrap().setup()里实现了instance的初始化,其中主要一步是Node的new,在Node的构造函数当中,将很多module也挂靠上去了。下面简单看看DiscoveryModule模块。

DiscoveryModule constructor
DiscoveryModule模块有2类,一个本地版/JVM版local,一个集群版zen。
LocalDiscovery
里面有几个重要的field,分别是ClusterService,RoutingService,ClusterState。自成master,final LocalDiscovery master = firstMaster。其中startInitialJoin用于启动触发,publish是master用于下发集群变化信息的函数。

下发信息
主要下发路由信息和元数据信息。
ZenDiscovery
这个模块相比上一个模块多了集群分布式的功能,如,TransportService、MasterFaultDetection、MembershipAction、JoinThreadControl等。
其中,集群模式下的master节点查找功能如下,
new JoinThreadControl(threadPool) -> innerJoinCluster -> findMaster() -> electMaster() -> sortedMasterNodes() -> membership.sendJoinRequestBlocking

findMaster

master node comparison
PREVIOUSS0-Overview
NEXTS3-ClusterModule