S2-DiscoveryModule

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

image

DiscoveryModule constructor

DiscoveryModule模块有2类,一个本地版/JVM版local,一个集群版zen

LocalDiscovery

里面有几个重要的field,分别是ClusterServiceRoutingServiceClusterState。自成master,final LocalDiscovery master = firstMaster。其中startInitialJoin用于启动触发,publish是master用于下发集群变化信息的函数。

image

下发信息

主要下发路由信息和元数据信息。

ZenDiscovery

这个模块相比上一个模块多了集群分布式的功能,如,TransportServiceMasterFaultDetectionMembershipActionJoinThreadControl等。 其中,集群模式下的master节点查找功能如下, new JoinThreadControl(threadPool) -> innerJoinCluster -> findMaster() -> electMaster() -> sortedMasterNodes() -> membership.sendJoinRequestBlocking

image

findMaster

image

master node comparison