专注于Java、Golang、软件架构、项目管理

Back

注册中心启动类就一个springboot应用,看不出什么东西

@EnableScheduling
@SpringBootApplication(scanBasePackages = {"com.alibaba.nacos.naming", "com.alibaba.nacos.core"})
public class NamingApp {
    
    public static void main(String[] args) {
        SpringApplication.run(NamingApp.class, args);
    }
}
java

通过官方文档已经一些分析,得知底层是用了raft协议来做集群同步

//PersistentConsistencyServiceDelegateImpl
private BasePersistentServiceProcessor createNewPersistentServiceProcessor(ProtocolManager protocolManager,
        ClusterVersionJudgement versionJudgement) throws Exception {
    //根据相关配置,判断到底是standlone还是raft模式
    final BasePersistentServiceProcessor processor =
            EnvUtil.getStandaloneMode() ? new StandalonePersistentServiceProcessor(versionJudgement)
                    : new PersistentServiceProcessor(protocolManager, versionJudgement);
    //调用基类的方法
    processor.afterConstruct();
    return processor;
}
java

具体的代码逻辑

再看raft相关的代码

从后置处理器触发选举,心跳等逻辑。达到大于集群半数节点即可选出leader。

所有的选举都通过http协议提交,详见RaftController中的/vote接口